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

2010 后序遍历

2010 后序遍历 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题目描述 Description 输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列...输入描述 Input Description 共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串,表示树的中序遍历。...输出描述 Output Description 仅一行,表示树的后序遍历序列。...巧妙利用后序遍历最后输出节点的性质 14 } 15 int main() 16 { 17 cin>>s1>>s2; 18 calc(0,s1.length()-1,0,s2.length...//l1+k-l2+1:紧接着右子树第一个节点也就是根节点的位置(l1+k-l2是左子树最后一个节点的位置,加一即为右子树第一个节点) 28 // cout << first[l1]; //因为后序遍历所以递归调用最后才输出根节点的值

56160

树的遍历(已知前序遍历中序遍历后序遍历,或者已知后序中序先序)

假设是1000个结点以内, 输入前序  4 1 3 2 6 5 7        中序  1 2 3 4 5 6 7  得到后续  2 3 1 5 7 6 4 已知前序遍历中序遍历后序遍历: import...(node.right); System.out.print(node.data + " "); } // 已知先序中序,建树 // @param pre 先序遍历的数组...// @param lo 先序遍历的起点下标 // @param in 中序遍历的数组 // @param ini 中序遍历的起点下标 // @param n 这个树的结点个数...i + 1, n - i - 1); // 右区间 // 最后一个参数是这个子树的有多少结点 return node; } } 题目描述 输入某二叉树的前序遍历和中序遍历的结果...假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。

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

给出前序遍历和中序遍历二叉树_已知前序遍历后序遍历

一、基本概念 1.先序遍历(NLR)可以确定二叉树的父子结点; 2.中序遍历(LNR)可以确定二叉树的左右子树; 3.后序遍历(LRN)可以确定二叉树的父子结点; 二、结论 1.已知先序遍历,中序遍历序列...,能够创建出一棵唯一的二叉树,可以得出二叉树的后序遍历; 2.已知后序遍历,中序遍历序列,能够创建出一棵唯一的二叉树,进而可以得出二叉树的先序序列; 3.综上,必须含有中序遍历(确定二叉树左右孩子),先序遍历或者后序遍历任选一个...(确定二叉树父子结点),就可以确定一棵唯一的二叉树 三、C++代码实现 1.已知先序遍历和中序遍历,打印后序遍历(见函数void postorder(string preorder, string inorder...)); 2.已知中序遍历后序遍历,打印先序遍历(见函数void preorder(string inorder, string postorder)); #include #include..., 右子树编号(pos+1~len-1) 中序遍历(LNR), 左子树编号(0~pos-1), 根节点编号(pos), 右子树编号(pos+1~len-1) 后序遍历(LRN), 左子树编号(0~

55620

二叉树面试题:前中序后序、中后序前序

在面试时,避免不了的会遇到一些数据结构的面试题,今天我们就来了解一下二叉树的经典面试题: 已知二叉树的前序遍历顺序为ABCDEGHF,中序遍历顺序为DBAGEHCF,该二叉树的后序遍历。...还有: 已知二叉树的中序遍历顺序为DBAGEHCF,后序遍历顺序为DBGHEFCA,该二叉树的前序遍历。 类似的面试题应该如何应对呢? 什么是二叉树? 在开始之前,容我再唠叨几句:什么是二叉树?...已知前中序遍历顺序,后序遍历顺序 扯了这么多,还是回到刚刚的第一道面试题上: 已知二叉树的前序遍历顺序为ABCDEGHF,中序遍历顺序为DBAGEHCF,该二叉树的后序遍历。...H)肯定为E的右子树,可以最终判断出二叉树是这样的: 写出后序遍历顺序 这个步骤就比较容易了,根据二叉树得到的后序遍历顺序就是:DBGHEFCA 已知中后序遍历顺序,前序遍历顺序 扯了这么多,还是回到刚刚的第一道面试题上...: 已知二叉树的中序遍历顺序为DBAGEHCF,后序遍历顺序为DBGHEFCA,该二叉树的前序遍历

26710

二叉树面试题:前中序后序、中后序前序

DBAGEHCF,该二叉树的后序遍历。...还有: 已知二叉树的中序遍历顺序为DBAGEHCF,后序遍历顺序为DBGHEFCA,该二叉树的前序遍历。 类似的面试题应该如何应对呢? 什么是二叉树? 在开始之前,容我再唠叨几句:什么是二叉树?...已知前中序遍历顺序,后序遍历顺序 扯了这么多,还是回到刚刚的第一道面试题上: 已知二叉树的前序遍历顺序为ABCDEGHF,中序遍历顺序为DBAGEHCF,该二叉树的后序遍历。...写出后序遍历顺序 这个步骤就比较容易了,根据二叉树得到的后序遍历顺序就是:DBGHEFCA 已知中后序遍历顺序,前序遍历顺序 扯了这么多,还是回到刚刚的第一道面试题上: 已知二叉树的中序遍历顺序为DBAGEHCF...,后序遍历顺序为DBGHEFCA,该二叉树的前序遍历

1.8K21

根据后序和中序遍历输出先序遍历

本文链接:https://blog.csdn.net/weixin_42449444/article/details/85331082 题目描述: 本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果...随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。 输出格式: 在一行中输出Preorder:以及该树的先序遍历结果。...否则:①中序遍历根结点的左子树;②访问根结点;③中序遍历根结点的右子树。简单来说中序遍历就是从左子树返回时遇到结点就访问。 3.后序遍历的递归过程为:若二叉树为空,遍历结束。...否则:①后序遍历根结点的左子树;②后序遍历根结点的右子树;③访问根结点。简单来说后序遍历就是从右子树返回时遇到结点就访问。...,inorder为中序,n为每次遍历数目 { if(n>0) { int root = postorder[n-1]; //根结点为后序遍历的最后一个

92810

二叉树---(3)前序遍历,中序遍历后序遍历

很多朋友在刚开始接触二叉树时,对前序遍历,中序遍历后序遍历这三个遍历方式不太了解,很多博客中,上来就是实现方式,并没有清晰的阐述这三种遍历的步骤和顺序,这里记录一下。        ...遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。         按照根节点位置的不同分为前序遍历,中序遍历后序遍历。...前序遍历:根节点->左子树->右子树 中序遍历:左子树->根节点->右子树 后序遍历:左子树->右子树->根节点 注意:在做前序遍历时,左右子树也是按照前序遍历的顺序, 同理,在做中序遍历时,左右子树也是按照中序遍历的顺序..., 同理,在做后序遍历时,左右子树也是按照后序遍历的顺序。...例1:下面树的三种遍历 ? 前序遍历:abdefgc 中序遍历:debgfac 后序遍历:edgfbca 例2:下面树的三种遍历 ?

65920

二叉树的先序遍历、中序遍历后序遍历

1 问题 Python中二叉树的先序遍历、中序遍历后序遍历。 2 方法 先序遍历的递归算法定义: 若二叉树非空,则依次执行如下操作: ⑴ 访问根结点; ⑵ 遍历左子树; ⑶ 遍历右子树。...后序遍历的递归算法定义: 若二叉树非空,则依次执行如下操作: ⑴ 遍历左子树;⑵ 遍历右子树;⑶ 访问根结点。...tree_base.data) self.middle_search(tree_base.right) def behind_search(self,tree_base): '后序遍历...:') btree.front_search(btree.base) print('中序遍历:') btree.middle_search(btree.base) print('后序遍历:') btree.behind_search...(btree.base) 3 结语 我们针对Python中二叉树的先序遍历、中序遍历后序遍历的问题,运用书上相应的基础知识,通过代码运行成功证明该方法是有效的,二叉树的遍历的应用非常广泛,希望通过未来的学习我们能写出更多长的

15710

二叉树的先序遍历 中序遍历 后序遍历 层序遍历

也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树 二叉树的遍历 先序遍历 :先遍历根节点,再遍历左节点,最后遍历右节点 中序遍历 :先遍历左节点,再遍历根节点,最后遍历右节点...后序遍历 :先遍历左节点,再遍历右节点,最后遍历根节点 层序遍历 : 自上而下,自左至右逐层访问树的结点的过程就是层序遍历 遍历方法的实现 先建立一棵树 用代码建立以上树 class Node...inOrder(root.left); System.out.print(root.val+" "); inOrder(root.right); } 下面进行后序遍历...//后序遍历 public static void postOrder(Node root){ if (root == null){ return;...System.out.println(top.val + " "); cur = top.right; } } // 二叉树的后序遍历

1K20
领券