-
思路: 簡單介紹了用數組存儲完全二叉樹的問題,重點就是找到父節點和子節點的關係(Node = 2leftNode+1,Node = 2rightNode+1 ) 下面的代碼就是二叉樹用數組存儲後,怎麼對數組進行前中後遍歷的問題。
-
代碼:
package tree;
public class ArrBinaryTreeDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {1,2,3,4,5,6,7,8,9};
ArrayBinaryTree binaryTree = new ArrayBinaryTree(arr);
// binaryTree.preOrder(0);
// binaryTree.infixOrder(0);
binaryTree.lastOrder(0);
}
}
class ArrayBinaryTree{
int[] arr;
public ArrayBinaryTree(int[] arr) {
super();
this.arr = arr;
}
//前序遍歷
public void preOrder(int order) {
if(arr == null || arr.length == 0 || order > arr.length-1) {
return;
}
System.out.println(arr[order]);
preOrder(2*order+1);
preOrder(2*order+2);
}
//中序遍歷
public void infixOrder(int order) {
if(arr == null || arr.length == 0 || order > arr.length-1) {
return;
}
infixOrder(2*order+1);
System.out.println(arr[order]);
infixOrder(2*order+2);
}
//後序遍歷
public void lastOrder(int order) {
if(arr == null || arr.length == 0 || order > arr.length-1) {
return;
}
lastOrder(2*order+1);
lastOrder(2*order+2);
System.out.println(arr[order]);
}
}