//前序遍歷
public static void preOrderedPrint(TreeNode root){
if (root!=null){
System.out.print(root.value);
preOrderedPrint(root.leftNode);//刪去了多余的if(root.leftNode!=null)的條件判斷蕊肥。
preOrderedPrint(root.rightNode);
}
}
//中序遍歷
public static void inOrderedPrint(TreeNode root){
if (root!=null){
inOrderedPrint(root.leftNode);
System.out.print(root.value);
inOrderedPrint(root.rightNode);
}
}
//后序遍歷
public static void postOrderedPrint(TreeNode root){
if (root!=null){
postOrderedPrint(root.leftNode);
postOrderedPrint(root.rightNode);
System.out.print(root.value);
}
}
用如下的完全二叉樹(shù)結(jié)構(gòu)來(lái)做試驗(yàn):
TreeNode newOne=createTree(root,list);
preOrderedPrint(newOne);
打于嘶瘛:0137849256
很不直觀有木有,于是寫(xiě)一個(gè)較為直觀的方法:
public static void vividPreOrderedPrint(TreeNode root,int depth) {
if (root != null) {
System.out.println();//換行
for (int i=0;i<depth;i++){//for循環(huán)來(lái)打印value前的空格
System.out.print("-");//結(jié)點(diǎn)深度越大壁却,空格越多
}
System.out.print(root.value);
depth++;
vividPreOrderedPrint(root.leftNode,depth);
vividPreOrderedPrint(root.rightNode,depth);
}
}
TreeNode newOne=createTree(root,list);
vividPreOrderedPrint(newOne,0);
打优:
0
-1
--3
---7
---8
--4
---9
-2
--5
--6
這就很清楚了,0是根節(jié)點(diǎn)展东,有一個(gè)“-”的是深度為1的結(jié)點(diǎn)赔硫,分別是1和2,有兩個(gè)“-”的是深度為2的結(jié)點(diǎn)盐肃,分別是......