二叉树前序、中序、后序遍历,和直观打印。

//前序遍历
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);
    }
}

用如下的完全二叉树结构来做试验:


TreeNode newOne=createTree(root,list);
preOrderedPrint(newOne);

打印:0137849256
很不直观有木有,于是写一个较为直观的方法:

public static void vividPreOrderedPrint(TreeNode root,int depth) {
    if (root != null) {
        System.out.println();//换行
        for (int i=0;i<depth;i++){//for循环来打印value前的空格
            System.out.print("-");//结点深度越大,空格越多
        }
        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是根节点,有一个“-”的是深度为1的结点,分别是1和2,有两个“-”的是深度为2的结点,分别是......

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容