定义二叉树
package tree;
public class BinaryTree {
int data;//根节点
public BinaryTree left;//左节点
public BinaryTree right;//右节点
public BinaryTree(int data)
{
this.data=data;
this.left=null;
this.right=null;
}
public BinaryTree()
{
}
//创建二叉树
//左子树上的数字都大于根节点,而右节点上的数字均小于根节点
public BinaryTree insert(BinaryTree root,int data)
{
if(data>root.data)
{
if(root.right==null)
{
root.right=new BinaryTree(data);
}
else
{
this.insert(root.right,data);
}
}
else
{
if(root.left==null)
{
root.left=new BinaryTree(data);
}
else
{
this.insert(root.left, data);
}
}
return null;
}
}
二叉树的遍历算法
public static void preOrder(BinaryTree root)
{
//BinaryTree bt=new BinaryTree();
if(root!=null)
{
System.out.print(root.data+" ");
preOrder(root.left);
preOrder(root.right);
}
}
//中序排列
public static void middleOrder(BinaryTree root)
{
if(root!=null)
{
middleOrder(root.left);
System.out.print(root.data+" ");
middleOrder(root.right);
}
}
//后序排列
public static void lastOrder(BinaryTree root)
{
if(root!=null)
{
lastOrder(root.left);
lastOrder(root.right);
System.out.print(root.data+" ");
}
}
//测试二叉树遍历
public static void main(String []args)
{
int []binary={12,76,35,22,16,48,90,46,9,40};
BinaryTree root=new BinaryTree( binary[0]);
for(int i=1;i<binary.length;i++)
{
root.insert(root, binary[i]);
}
System.out.println("先序排序后的结果为:");
preOrder(root);
System.out.println("");
System.out.println("中序排序后的结果为:");
middleOrder(root);
System.out.println("");
System.out.println("后序排序后的结果为:");
lastOrder(root);
}
转载于:https://my.oschina.net/jaffine/blog/324511