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

前序遍历遍历求后序遍历-数组篇

如果已知前序遍历遍历,那么肯定能够求出后序遍历。正常的思路就是,根据前序遍历遍历,我们把二叉树的结构给描述出来,然后再使用后序遍历。...但是假设我们的遍历顺序存放在数组,那么我们大可不必那么麻烦。下面就是针对数组求后序遍历的算法,代码如下,大家供参考。...#include //前序遍历:根左右 //遍历:左根右 //后序遍历:左右根 //在前序遍历遍历的基础上,我们从前序遍历找出根节点,然后从中序遍历找出根节点的左右分支...//这里由于我们是通过数组来存放的,因此有一点肯定的是根节点左右的分值都是连续存在数组的 //因此我们这里选择的是分值在数组的首地址,以及分值的个数作为参数 void postorder(int...if(len==0) //不存在节点 return ; else if(len==1) { //存在一个节点 printf("%d ",a[0]); return ; } //在b搜索根节点的位置

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

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

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

    27820

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

    很多朋友在刚开始接触二叉树时,对前序遍历遍历,后序遍历这三个遍历方式不太了解,很多博客,上来就是实现方式,并没有清晰的阐述这三种遍历的步骤和顺序,这里记录一下。        ...所谓遍历(Traversal)是指沿着某条搜索路线,依次对树每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问 题。...遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。         按照根节点位置的不同分为前序遍历遍历,后序遍历。...前序遍历:根节点->左子树->右子树 遍历:左子树->根节点->右子树 后序遍历:左子树->右子树->根节点 注意:在做前序遍历时,左右子树也是按照前序遍历的顺序, 同理,在做遍历时,左右子树也是按照遍历的顺序...例1:求下面树的三种遍历 ? 前序遍历:abdefgc 遍历:debgfac 后序遍历:edgfbca 例2:求下面树的三种遍历 ?

    67720

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

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

    17510

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

    本文链接:https://blog.csdn.net/weixin_42449444/article/details/85331082 题目描述: 本题要求根据给定的一棵二叉树的后序遍历遍历结果...输入格式: 第一行给出正整数N(≤30),是树结点的个数。随后两行,每行给出N个整数,分别对应后序遍历遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。...输出格式: 在一行输出Preorder:以及该树的先序遍历结果。数字间有1个空格,行末不得有多余空格。...否则:①访问根结点;②先序遍历根结点的左子树;③先序遍历根结点的右子树。 简单来说先序遍历就是在深入时遇到结点就访问。 2.遍历的递归过程为:若二叉树为空,遍历结束。...否则:①遍历根结点的左子树;②访问根结点;③遍历根结点的右子树。简单来说中序遍历就是从左子树返回时遇到结点就访问。 3.后序遍历的递归过程为:若二叉树为空,遍历结束。

    94610

    java hashmap 遍历删除元素_java HashMap 遍历与删除

    keys或values /*** * 如果只需要map的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet * 该方法比entrySet遍历在性能上稍好(快了10%),...而且代码更加干净 **/Map map = new HashMap();//遍历map的键 for(Integer key : map.keySet()) { System.out.println...首先,在老版本java这是惟一遍历map的方式。另一个好处是, * 你可以在遍历时调用iterator.remove()来删除entries,另两个方法则不能。...根据javadoc的说明, * 如果在for-each遍历尝试使用此方法,结果是不可预测的。从性能方面看,该方法类同于for-each遍历(即方法二)的性能。 **/Map, ?...因为从键取值是耗时的操作(与方法一相比, * 在不同的Map实现该方法慢了20%~200%)。如果你安装了FindBugs, * 它会做出检查并警告你关于哪些是低效率的遍历

    2.4K10
    领券