首页 > 编程语言 > 详细

让我们来写个算法吧,(2)二叉树的前序,中序,后序 遍历

时间:2020-02-29 10:06:49      阅读:58      评论:0      收藏:0      [点我收藏+]

树的类结构

public class TreeNode {
    
    TreeNode left;
    
    TreeNode right;
    
    int value;
    
    public TreeNode(int value ) {
        this.value = value;
    }

}

自己生成二叉树 

private TreeNode createTreeNode() {
        
        TreeNode[] node = new TreeNode[10];// 以数组形式生成一棵完全二叉树
        
        for (int i = 0; i < 10; i++) {
            node[i] = new TreeNode(i);
        }
        
        for (int i = 0; i < 10; i++) {
            if (i * 2 + 1 < 10)
                node[i].left = node[i * 2 + 1];
            if (i * 2 + 2 < 10)
                node[i].right = node[i * 2 + 2];
        }

        return node[0];
    }

生成的二叉树长这个样子

技术分享图片

 

 

 二叉树的前序遍历就是,先输出根节点,再输出左子节点,最后输出右子节点

private void preOrderRe(TreeNode node) {
        if(null == node) {
            return;
        }
        System.out.print(node.value+" ");
        preOrderRe(node.left);
        preOrderRe(node.right);
    }

遍历结果 : 0 1 3 7 8 4 9 2 5 6 

二叉树的中序遍历就是,先输出左子节点,再输出根节点,最后输出右子节点

 

private void midOrderRe(TreeNode node) {
        if(null == node) {
            return;
        }
        if(node.left!=null) {
            midOrderRe(node.left);
        }
        System.out.print(node.value+" ");
        
        midOrderRe(node.right);
    }

遍历结果 : 7 3 8 1 9 4 0 5 2 6

二叉树的后中序遍历就是,先输出左子节点,再输出右子节点,最后输出根节点

    private void postOrderRe(TreeNode node) {
        if(null == node) {
            return;
        }
        if(node.left!=null) {
            postOrderRe(node.left);
        }
        postOrderRe(node.right);
        
        System.out.print(node.value+" ");
        
    }

遍历结果 : 7 8 3 9 4 1 5 6 2 0 

 

让我们来写个算法吧,(2)二叉树的前序,中序,后序 遍历

原文:https://www.cnblogs.com/leaveast/p/12381462.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!