先是构建二叉树以及三种遍历的函数,采用左小右大的方法。
class BinaryTree {
Node root; //根节点
public void addNode(int value){
Node newNode = new Node(value);
if(root == null){
root = newNode;
}
else{
Node temp = root;
while(temp!=null){
if(value<=temp.data){
if(temp.left==null){
temp.left = newNode;
return;
}else
temp = temp.left;
}else{
if(temp.right==null){
temp.right = newNode;
return;
}else
temp = temp.right;
}
}
}
}
/**
*
* @param root
*/
//中序遍历
public void midprint(Node root){
if(root!=null){
midprint(root.left);
System.out.print(root.data + " ");
midprint(root.right);
}
}
//后序遍历
public void posprint(Node root){
if(root!=null){
posprint(root.left);
posprint(root.right);
System.out.print(root.data + " ");
}
}
//前序遍历
public void preprint(Node root){
if(root!=null){
System.out.print(root.data + " ");
preprint(root.left);
preprint(root.right);
}
}
}
创建一个新结构。
class Node{
int data; //当前节点数值
Node left; //左孩子
Node right; //右孩子
public Node(int data){
this.left = null;
this.right = null;
this.data = data;
}
}
主函数如下:
public static void main(String[] args) {
// TODO code application logic here
BinaryTree b = new BinaryTree();
System.out.println("请输入几个数并用逗号隔开(如:5,3,6,...):");
Scanner sc = new Scanner(System.in);
String str = sc.next();
String[] arr = str.split(",");
int[] c = new int[arr.length];
for(int j = 0; j<c.length;j++) {
c[j] = Integer.parseInt(arr[j]);
}
for(int j = 0; j<c.length;j++) {
b.addNode(c[j]);
}
System.out.print("前序遍历:");
b.preprint(b.root);
System.out.println();
System.out.print("中序遍历:");
b.midprint(b.root);
System.out.println();
System.out.print("后序遍历:");
b.posprint(b.root);
}
运行的结果如下: