首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

二叉树的后序遍历序列

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

28710

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从中序与后序遍历序列构造二叉树

20120

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

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

62470

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

目录 前序遍历 + 中序遍历序列 后序+中序遍历序列 层序遍历+中序遍历序列 ---- 若只给出一棵二叉树的前/中/后/层 序遍历序列的一种,不能唯一确定一棵二叉树 前序遍历 + 中序遍历序列...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

23520

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

根据中序遍历的定义,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.1K20

【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

42120

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

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

38330

剑指offer 33——二叉搜索树的后序遍历序列

递归分治 既然本题只提供了后序遍历,那么我们就要在此基础之上下功夫了。 根据上面的提供的说明,后序遍历是,先左右子树再根节点,那么根是容易判断的,肯定在整个序列的最后。...然后再分别遍历左右子树,直至到叶子节点为止(即无左右子树的节点)。 按照上面的方法,就需要我们将后序遍历分成左右子树,不断递归遍历检查。...递增栈 既然上面分析出时间复杂度为 O(N^2) ,那么是否可以找到一种更高效的方法,只遍历一次序列,就可以解决问题呢?因为这样可以在时间复杂度上进行很大的优化。...(这个方法我是在网上看到的,感觉属于一种比较偏门的优化,一般很难想出这种方法) 在我们从后向前遍历序列时,大致是经历了根、右子树、左子树,而左子树 < 根 < 右子树,那么一开始应该是单调递增的,我们可以将这些节点依次入栈...此时继续遍历,应该保证所有节点都小于根节点,因为此时已经进入左子树序列了。否则说明该序列不满足搜索二叉树的后序遍历。 重复以上步骤,如果遍历结束,说明满足搜索二叉树的后序遍历

45630

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

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

45920
领券