首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

由前序序列与中序序列实现后序遍历

前序遍历:就是先遍历根节点,然后再访问左子树与右子树。遍历子树的时候同样也是先遍历根节点然后在遍历他的左子树与右子树。 中序遍历:先遍历左子树,在遍历根节点,最后遍历右子树。...后序遍历:先遍历左子树与右子树,在遍历根节点。 因为有这样的特点所以可以通过中序序列与后序或前列序列来确定一个二叉树。...一个二叉树的前序序列为abdecf 后序序列为dbeacf 由前序序列的特点我们知道前序序列第一个节点一定是该树的根节点,这样在中序序列中寻找与根节点相同的点,以根节点在中序序列的位置为界限,记为l1...,左边就是左子树的中序遍历,右边就是右子树中序遍历,此时根节点在中序序列中的位置,就是前序序列遍历完左子树加上根节点的最后一个位置,记为l2,此时,在先序序列中除去第一个节点(因为第一个节点是根节点,...这时可以看出a是树的根节点,在bde与dbe分别是左子树的前序序列和中序序列,cf就是右子树的先序序列和中序序列,这样再以新生成的前序序列与中序序列再次进行找根节点并且分割左右子树的操作,这样直到两颗子树都只有一个节点时

18710
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    二叉树的后序遍历序列

    前言 有一个整数数组,如何判断该数组是不是某个二叉树的后序遍历结果?本文就跟大家分享下这个算法,欢迎各位感兴趣的开发者阅读本文。 思路分析 我们通过一个例子来分析这个问题,如下所示为一颗二叉树。...image-20221023214717313 通过之前文章的学习(二叉树的后序遍历),我们可以很快看出这颗树的后序遍历序列为: [5, 7, 6, 9, 11, 10, 8],通过观察后我们发现最后一个数字为二叉树的根节点...,数组中前面的数字可以分为两部分: 第一部分是左子树节点的值,它们都比根节点的值小 第二部分是右子树节点的值,它们都比根节点的值大 在上面的后序遍历结果数组中,前3个数字5、7、6都比根节点8小,是它的左子树节点...rightIndex从分界点开始找(默认从leftIndex位置开始),如果有比根节点小的值,那么这个序列一定不属于二叉树的后序遍历序列 如果leftIndex指针离开了起始位置(0),证明它的左子节点还没找完...) 如果leftIndex指针没有到达数组末尾,证明它的右子节点还没找完,需要重复执行上述过程继续查找(从leftIndex+1位置开始递归) 返回左、右子树的递归校验结果(两者都为true则表示这个序列为二叉树的后序遍历序列

    30810

    LeetCode——遍历序列构造二叉树

    105从前序与中序遍历序列构造二叉树 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点...preorder[i], inorder[i] <= 3000 preorder 和 inorder 均无重复元素 inorder 均出现在 preorder preorder 保证为二叉树的前序遍历序列...inorder 保证为二叉树的中序遍历序列 原题目链接:https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal.../ 思路: 这里给的两个数组,第一个数组是前序遍历的内容,第二个是中序遍历的内容,前序遍历是根,左,右,由此可以确定根节点,但是不能确定左子树和右子树是怎么分布的,但是中序遍历可以根据确定的第一个根来判断左子树和右子树的区间...inorder.size() - 1;//第二个数组的区间,尾 return section(preorder,inorder,pos,begin,end); } }; 106从中序与后序遍历序列构造二叉树

    23120

    二叉搜索树的后序遍历序列

    题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。...例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:          8        /  \       6    10     / \    / \    5   7...如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。 分析:这是一道trilogy的笔试题,主要考查对二元查找树的理解。...在后续遍历得到的序列中,最后一个元素为树的根结点。...根据这样的划分,把序列划分为左右两部分,我们递归地确认序列的左、右 两部分是不是都是二元查找树。 在后序遍历得到的序列中,最后一个数字是树的根结点的值。

    66170

    遍历序列构造二叉树--王道

    目录 前序遍历 + 中序遍历序列 后序+中序遍历序列 层序遍历+中序遍历序列 ---- 若只给出一棵二叉树的前/中/后/层 序遍历序列的一种,不能唯一确定一棵二叉树 前序遍历 + 中序遍历序列...A为根结点,而中序遍历左边一定为左子树遍历序列即BDC,右边右子树为E。  ...左:EAF  右:HCBGI 看左边的序列 EAF ,而在后序遍历那为EFA,可知A为“根结点”,左:E   右:F 看右边的序列HCBGI,前序遍历那为HCIGB,可知B为“根结点”,左:HC  右...:GI 最后可知 H在左,C在右,G在左 ,I 在右 ---- 层序遍历+中序遍历序列  开始时知道D在层序序列为第一个遍历所以,D为根结点,左子树:EAF,右子树:HCBGI  之后由中序遍历层序遍历知...由层序遍历知,EF后面为CG所以它俩在中间,C 和 G 分别在中间,在看中序遍历序列 C的左边挂H,G的右边挂I

    26220

    从前序与中序遍历序列构造二叉树从中序与后序遍历序列构造二叉树

    根据中序遍历的定义,1左边的数{4,2,5}就是左子树的中序遍历,1右边的数{6,3,7}就是右子树的中序遍历。而对于后序遍历来讲,一定是先后序遍历完左子树,再后序遍历完右子树,最后遍历根。...于是可以推出:{4,5,2}就是左子树的后序遍历,{6,3,7}就是右子树的后序遍历。而我们已经知道{4,2,5}就是左子树的中序遍历,{6,3,7}就是右子树的中序遍历。...二叉树的前序、中序、后序遍历(深度优先遍历遍历即将树的所有结点都访问且仅访问一次。...按照根结点访问次序的不同,可以分为前序遍历,中序遍历,后序遍历。...前序遍历:abdefgc 中序遍历:debgfac 后序遍历:edgfbca 层次遍历(广度优先遍历) 层次遍历:abcdfeg

    1.2K20

    【LeetCode系列】从中序与后序遍历序列构造二叉树 & 从前序与中序遍历序列构造二叉树

    从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: - 你可以假设树中没有重复的元素。...例如,输入: 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 输出:[3,9,20,null,null,15,7] 返回如下的二叉树...而由于中序遍历是左根右,我们容易找到pos左边的都是左子树,pos右边都是右子树。...从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。...例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9,15,7,20,3] 返回如下的二叉树: 3 / \ 9 20

    46420

    由中序遍历和后序遍历还原二叉树_二叉树的中序列

    二叉树的前序遍历、中序遍历和后序遍历之间还原二叉树 1、概念 (1)前序遍历 a、访问根节点;b、前序遍历左子树;c、前序遍历右子树。...(2)中序遍历 a、中序遍历左子树;b、访问根节点;c、中序遍历右子树。 (3)后序遍历 a、后序遍历左子树;b、后续遍历右子树;c、访问根节点。...中序遍历:CDFEGHAB 求得后序遍历结果为:CFHGEDBA 3、中序遍历和后序遍历还原二叉树 思想如下: a、根据后序遍历结果,最后一个元素为二叉树的根结点; b、观察中序遍历结果...结果为: ABDHIEJKCFLMGNO 练习:可参考前序遍历和中序遍历的练习 4、前序遍历和后序遍历还原二叉树 已知前序和中序,后序和中序遍历序列之后,可以唯一确定一棵二叉树。...但是,只知道前序和后序遍历序列,是无法知道哪个结点是左子树还算右子树。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

    44430

    二叉树的先序,中序,后序遍历序列_二叉树先序遍历和后序遍历正好相反

    此外,还有一个命题:给定了二叉树的任何一种遍历序列,都无法唯一确定相应的二叉树。但是如果知道了二叉树的中序遍历序列和任意的另一种遍历序列,就可以唯一地确定二叉树。...例子1:已知二叉树的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是(cedba)。...(1)中序遍历:debac 后序遍历:dabec 后序遍历序列的最后一个结点是根结点,所以可知c为根结点。 中序遍历序列的根结点在中间,其左边是左子树,右边是右子树。...(3)中序遍历:ba 后序遍历:ab 由后序遍历序列可知b为e的右子树的根结点。由中序遍历序列中可看出,a为根结点b的右子结点。...abdgcefh,中序遍历序列是dgbaechf,它的前序遍历序列是(gdbehfca)。

    55420
    领券