自己关于二叉树的先序、中序、后序的理解

自己关于二叉树的先序、中序、后序的理解。
这次我们请来了神奇的二叉树,什么是二叉树呢?

在这里插入图片描述在这里插入图片描述
图片非原创,从别的网页上面拿的。
关于二叉树的图片:https://image.so.com/i?q=%E4%BA%8C%E5%8F%89%E6%A0%91%E5%9B%BE%E7%89%87&listsrc=sobox&listsign=79bcdbde047802919736e3cded83b409&src=360pic_strong#/
关于这个奇怪的东西遍历可以分为先序、中序、后序。
至于先序中序后序的理解可以这样。
对于一个节点而言,先序是先读取自己再读取左右。
中序是先读取左边的子分支节点,再读取自己,再读取右边的分支节点。
同理推断,后序是最后读取自己。
当然,至于左右读取方面是先左后右。
然后,对于这个图……
在这里插入图片描述
先序:
在这里插入图片描述
中序:
在这里插入图片描述
后序:
在这里插入图片描述
为什么我要读图片呢?因为……(我也不知道为什么我要放图片);
好了,经过观察不难发现(这个数有点多,我看着有点方,我还是放个少一点的二叉树来表示吧!!!)
在这里插入图片描述
首先,如果是先序的话,应该输出的是1 2 3
优先自己,所以先输出1,然后分别左右输出1 2
(还有就是要考虑什么东西不存在的时候的情况,比如说下面的!=null判定)

private void xianxu(Node node){
        if(node != null) {
            this.print(node);
            if (node.getLeft() != null) xianxu(node.getLeft());
            if (node.getRight() != null) xianxu(node.getRight());
        }
    }

中序就是先输出 左边的数据2,(中间输出)再输出自己的数据1,最后输出右边的数据3

private void zhongxu(Node node){
        if(node != null) {
            if (node.getLeft() != null) zhongxu(node.getLeft());
            this.print(node);
            if (node.getRight() != null) zhongxu(node.getRight());
        }
    }

然后后序同理!同理!同理!把自己放在后面,无私的先给自己的儿子(分支节点)出风头,表达了无私的父爱(或者说是母爱呢?)。

private void houxu(Node node){
        if(node != null) {
            if (node.getLeft() != null) houxu(node.getLeft());
            if (node.getRight() != null) houxu(node.getRight());
            this.print(node);
        }
    }

输出应该是先2 再3 最后1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值