算法创作 | 二叉树遍历问题解决方法

问题描述二叉树的先序遍历、中序遍历、后序遍历怎么求?解决方案给你一个二叉树(如图)那么怎么找出它的先序遍历、中序遍历、后序遍历呢?我们先看一个简单二叉树来了解它的概念。

所谓前序,中序,后序就是指根所在的位置。比如前序遍历可以理解成根在前,简记成根-左-右。中序遍历可以理解成根在中间,简记成左-根-右。同理后序遍历即左-右-根。知道这个简单记忆方法后我们再来看一个稍微复杂的二叉树。

要想求解这个二叉树的前序遍历、中序遍历、后序遍历显然比刚才的简单二叉树更难,但是运用原理是一样的。那么我们是怎么得到它的前序遍历呢?分为5个步骤:(1)根据口诀,前序就是根在前,即根左右(2)再从上往下把这个二叉树拆解成“ABC”“BEF” “CGH”三棵简单的二叉树(3)确定大范围,从上往下是(根左右):AB______C_______(4)再锁定到拆解成的另外两棵树“BEF” “CGH”,注意这两棵树的顺序是先左后右,所以先看“BEF”。可以确定在这棵简单二叉树里它的前序就是BEF。根据先左后右,再看树“CGH”,可以确定在这棵简单二叉树里它的前序就是CGH。(5)现在我们已经确定每棵树的前序,那么就可以直接回填了,即AB_EF_____C_GH______同理,我们怎么得到它的中序遍历呢?同样分成5个步骤:(1)根据口诀,中序就是根在中间,即左根右(3)确定大范围,从上往下是(左根右):___B___A___C___(4) 再锁定到拆解成的另外两棵树“BEF” “CGH”,注意这两棵树的顺序是先左后右,所以先看“BEF”。可以确定在这棵简单二叉树里它的中序就是EBF。根据先左后右,再看树“CGH”,可以确定在这棵简单二叉树里它的中序就是GCH。(5)现在我们已经确定每棵树的前序,那么就可以直接回填了,即__E_B_F__A_G__C__H_那么最后我们怎么得到它的后序遍历呢?同样用5个步骤来看:(1)根据口诀,后序就是根在最后,即左右根(2)再从上往下把这个二叉树拆解成“ABC”“BEF” “CGH”三棵简单的二叉树(3)确定大范围,从上往下是(左右根):____B____CA(4) 再锁定到拆解成的另外两棵树“BEF” “CGH”,注意这两棵树的顺序是先左后右,所以先看“BEF”。可以确定在这棵简单二叉树里它的后序就是EFB。根据先左后右,再看树“CGH”,可以确定在这棵简单二叉树里它的后序就是GHC。(5)现在我们已经确定每棵树的前序,那么就可以直接回填了,即_EF___B_GH___CA到这里,它的前序遍历、中序遍历、后序遍历就全部求解完成了。结语本文章讲了怎么找一棵二叉树的遍历结构,画了两棵比较简单的树,讲述了其原理,其实还有更多复杂的树在等着我们去探索和发现,但是授人以鱼不如授人以渔,只要掌握其原理和方法,加上足够的耐心和细心,再复杂的二叉树都会被我们肢解成一些些简单的“小树枝”然后去破解它!实习编辑:李欣容作者:陈叶、刘楸雨赵玉琴

(0)

相关推荐

  • 二叉树的遍历(前序、中序、后序、已知前中序求后序、已知中后序求前序)

    之前的一篇随笔(二叉树.前序遍历.中序遍历.后序遍历)只对二叉树的遍历进行了笼统的描述,这篇随笔重点对前.中.后序的遍历顺序进行分析 二叉树的遍历 二叉树的深度优先遍历可细分为前序遍历.中序遍历.后序 ...

  • 算法创作|神奇语言问题解决方法

    问题描述一位同学正在学习一门神奇的语言,其中的单词都是由小写英文字母组成,有些单词很长,而这位同学一直记不住,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现的最多来分辨单词,现在请帮助这位同学 ...

  • 算法创作|阶梯电价问题解决方法

    问题描述为了提倡居民节约用电,某省电力公司执行"阶梯电价",安装一户一表的居民用户电价分为两个"阶梯":月用电量50千瓦时(含50千瓦时)以内的,电价为0.53 ...

  • 算法创作|“画雪人”问题解决方法

    问题描述示例:运用Turtle画出一个戴帽子的雪人在你门前,我堆起一个雪人,代表笨拙的我,把你久等...解决方案掌握turtle库,you can do you want.代码清单 1 DFS求解1到 ...

  • 算法创作|反转链表问题解决方法

    问题描述给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right .请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 . ...

  • 算法创作|简单行列式问题解决方法

    前言用Python做线代问题描述大二学习了行列式的部分知识,所以就想能不能用Python计算简单的行列式计算.输入:新建文件夹,建立一个新的Excel,写入图1数据,并重命名这页sheet为计算,并将 ...

  • 算法创作|调手表问题解决方法

    问题描述小明买了块高端大气上档次的电子手表,他正准备调时间呢.在 M78 星云,时间的计量单位和地球上不同,M78 星云的一个小时有 n 分钟.大家都知道,手表只有一个按钮可以把当前的数加一.在调分钟 ...

  • 算法创作|质数计数问题解决方法

    问题描述统计所有小于非负整数n的质数的数量.示例:输入:n = 10输出:4示例:输入:n = 1输出:0示例:输入:n = 0输出:0提示:0 <= n <= 5 * 106解决方案对于 ...

  • Python|二叉树的遍历问题解决方法

    问题描述二叉树是由n个结点的有限集合,该集合或者为空集,或者由一个根节点和两颗互不相交的.分别称为根节点的左子树和右子树的二叉树组成.二叉树特征:每个结点最多只有两颗子树,即二叉树中结点的度最高不能超 ...

  • 算法创作 | 0到n-1中缺失的数字问题解决方法

    问题描述一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0-n-1之内.在范围0-n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字.示例1:输入:[0,1,3 ...