二叉樹的基本遍歷程序


package main;

class Node{
public int data;
public Node left;
public Node right;
public Node(int data){
this.data=data;
this.left=null;
this.right=null;
}
}

public class BinaryNode {
public Node root;
public BinaryNode(){
root=null;
}
//插入節點
public void insert(int data)
{
Node newNode=new Node(data);
if(root==null)
{
root=newNode;
}
else{
Node current=root;
Node parent;
while(true)
{
parent=current;
if(data<current.data)
{
current=current.left;
if(current==null)
{
parent.left=newNode;
return;
}
}
else
{
current=current.right;
if(current==null)
{
parent.right=newNode;
return;
}
}
}
}
}
//創建二叉樹
public void buidTree(int[] data)
{
for(int i=0;i<data.length;i++)
{
insert(data[i]);
}
}
//遞歸法中序遍歷
public void order(Node node)
{
if(node!=null)
{
order(node.left);
System.out.print(node.data+" ");
order(node.right);
}
}
// 遞歸法前序遍歷
public void before(Node node)
{

if(node!=null)
{
System.out.print(node.data+" ");
before(node.left);
before(node.right);
}
}
// 遞歸后序遍歷
public void later(Node node)
{
if(node!=null)
{
later(node.left);
later(node.right);
System.out.print(node.data+" ");
}
}
public static void main(String[] args){
BinaryNode bitTree=new BinaryNode();
int[] data={2,8,7,4,9,3,1,6,7,5};
bitTree.buidTree(data);

//前序遍歷結果
System.out.println("前序遍歷結果");
bitTree.before(bitTree.root);
System.out.println();

// 中序遍歷結果
System.out.println("中序遍歷結果");
bitTree.order(bitTree.root);
System.out.println();

// 后序遍歷結果
System.out.println("后序遍歷結果");
bitTree.later(bitTree.root);
System.out.println();
}
}

輸出結果:

前序遍歷結果
2 1 8 7 4 3 6 5 7 9
中序遍歷結果
1 2 3 4 5 6 7 7 8 9
后序遍歷結果
1 3 5 6 4 7 7 9 8 2




注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com