1. 程式人生 > >Java二叉樹遍歷

Java二叉樹遍歷

用java實現二叉樹的遍歷演算法,先編寫二叉樹類BinaryTree,程式碼如下:

public class BinaryTree {

 private int data;      //根節點資料
 BinaryTree left;    //左子樹
 BinaryTree right;   //右子樹

 public BinaryTree(int data)    //例項化二叉樹類
 {
  this.data = data;
  left = null;
  right = null;
 }

 public void visitDate() {
     System.out.println(this
.data); } public void 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); } } } }

建立好二叉樹類後建立二叉樹例項,並實現二叉樹的先根遍歷(先序遍歷),中根遍歷(中序遍歷),後根遍歷(後序遍歷),程式碼如下:

public class BinaryTreePreorder {

 public static void preOrder(BinaryTree root){  //先根遍歷
  if(root!=null){
   root.visitDate();
   preOrder(root.left);
   preOrder(root.right);
  }
 }

 public
static void inOrder(BinaryTree root){ //中根遍歷 if(root!=null){ inOrder(root.left); root.visitDate(); inOrder(root.right); } } public static void postOrder(BinaryTree root){ //後根遍歷 if(root!=null){ postOrder(root.left); postOrder(root.right); root.visitDate(); } } //測試二叉樹 public static void main(String[] str){ int[] array = {12,76,35,22,16,48,90,46,9,40}; BinaryTree root = new BinaryTree(array[0]); //建立二叉樹 for(int i=1;i<array.length;i++){ root.insert(root, array[i]); //向二叉樹中插入資料 } System.out.println("先根遍歷:"); preOrder(root); System.out.println("-----------------"); System.out.println("中根遍歷:"); inOrder(root); System.out.println("-----------------"); System.out.println("後根遍歷:"); postOrder(root); }