一句话理解二叉树前中后序得概念

1,前中后序顾名思义。在左右递归得前中后输出节点

前序遍历
 public void preOrderTraverse1(TreeNode root) {
        if (root != null) {
            System.out.print(root.val + "->");//递归之前输出
            preOrderTraverse1(root.left);
            preOrderTraverse1(root.right);
        }
    }

中序遍历
 public void inOrderTraverse(TreeNode root) {
        if (root != null) {
            inOrderTraverse(root.left);
            System.out.print(root.val + "->");//递归中间输出
            inOrderTraverse(root.right);
        }
    }

后序遍历
 public void postOrderTraverse(TreeNode root) {
        if (root != null) {
            postOrderTraverse(root.left);
            postOrderTraverse(root.right);
            System.out.print(root.val + "->");//递归之后输出
        }
    }

增加一个对于中序遍历二叉搜索树的理解吧。中序遍历二叉搜索树,是从小到大输出。

因为二叉搜索树的定义是左节点全部小于当前节点。又结点全部大小当前结点。结合代码来看。

中序遍历。

中序遍历
 public void inOrderTraverse(TreeNode root) {
        if (root != null) {
            //先遍历比root小的
            inOrderTraverse(root.left);
            System.out.print(root.val + "->");//比root小的遍历完了,输出
            inOrderTraverse(root.right);//再遍历比我大的
            //当前方法结束回到上一个结点的递归。
        }
    }

只是加了一些注释。如果还是不明白呢。继续看下面的解释:从根节点出发会一路向左下找到最小的数。最小的树没有左节点输出。也就是我们可以判断一个结点没有左结点或者已经遍历过,那么就是已经处理了比他跟小的。然后就会遍历右节点。一样的道理,优先左节点。这样每一次输出的结点就能确保没有这个结点更小的结点,或者是比他更小的已经处理过了。

所以中序遍历的思想就是找左节点。有就继续找,没有就输出。直到所有的结点的左节点都被判断过。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值