关于数据结构中的树--这个我总是学总是忘的东西
2010-07-12 22:44
176 查看
由二叉树的前序和中序遍历结果可以推出整个二叉树的结构;进而可以得到后序遍历的结果。类似的,由后序,中序可以推出二叉树结构。唯独由前序,后序不能推出中序。为什么呢?我想了下,原因很显然,前序中可以明确知道根节点是第一个元素,后序中也只能确定根结点,这样就不能确定左子树和右子树各是哪些元素了。而有了中序遍历的结果就不同了,因为中序遍历可以用已知的根结点将遍历分成左右两部分。
根据1中的总结,总结一下,如何根据前序遍历和中序遍历的结果将树重构出来。首先,根结点一定是前序遍历的第一个元素,好吧,找到它,然后看在中序遍历中这个元素位于哪里。那么这个元素可以把中序遍历分为左右两个子树。以此类推,可以在纸上很容易就画出树。然后得出它的后序遍历的结果。
二叉树的概念:不能理解为一种特殊的树,因为它跟树是不同的。首先,二叉树可以为空,其次,有“次序”,也就是说有一些结构看起来不同,但是在树里可能就是相同的结构,而在二叉树里视为不同的结构。二叉树就是度最大为2,有左右子树之分,次序不能任意颠倒。
完全二叉树:每一层次的节点可以与满二叉树编号的结点一一对应。
满二叉树:每一层次上的节点数目达到最大的二叉树。满二叉树当然是完全二叉树。
平衡二叉树
二叉树的存储结构有两种。一种是顺序的,也就是按树的层次,从根结点开始一层一层遍历,将结点的值存到数组里,遇到一层上结点为空则用0代替;另一种是链式的存储,一般是定义一个结构体,包括value,左孩子,右孩子。还有一种是多了一个指向根结点的指针。
二叉树的一些特性总结,见严蔚敏的数据结构书123页
堆其实就是一种完全二叉树。只是根的关键字一定小于或等于它的孩子结点的关键字。
根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最小者的堆称为小根堆,又称最小堆.
根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最大者,称为大根堆,又称最大堆.
注意:
①堆中任一子树亦是堆。
②以上讨论的堆实际上是二叉堆(Binary Heap),类似地可定义k叉堆。
二叉查找树的平均查找长度为O(log2n)
根据1中的总结,总结一下,如何根据前序遍历和中序遍历的结果将树重构出来。首先,根结点一定是前序遍历的第一个元素,好吧,找到它,然后看在中序遍历中这个元素位于哪里。那么这个元素可以把中序遍历分为左右两个子树。以此类推,可以在纸上很容易就画出树。然后得出它的后序遍历的结果。
二叉树的概念:不能理解为一种特殊的树,因为它跟树是不同的。首先,二叉树可以为空,其次,有“次序”,也就是说有一些结构看起来不同,但是在树里可能就是相同的结构,而在二叉树里视为不同的结构。二叉树就是度最大为2,有左右子树之分,次序不能任意颠倒。
完全二叉树:每一层次的节点可以与满二叉树编号的结点一一对应。
满二叉树:每一层次上的节点数目达到最大的二叉树。满二叉树当然是完全二叉树。
平衡二叉树
二叉树的存储结构有两种。一种是顺序的,也就是按树的层次,从根结点开始一层一层遍历,将结点的值存到数组里,遇到一层上结点为空则用0代替;另一种是链式的存储,一般是定义一个结构体,包括value,左孩子,右孩子。还有一种是多了一个指向根结点的指针。
二叉树的一些特性总结,见严蔚敏的数据结构书123页
堆其实就是一种完全二叉树。只是根的关键字一定小于或等于它的孩子结点的关键字。
根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最小者的堆称为小根堆,又称最小堆.
根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最大者,称为大根堆,又称最大堆.
注意:
①堆中任一子树亦是堆。
②以上讨论的堆实际上是二叉堆(Binary Heap),类似地可定义k叉堆。
二叉查找树的平均查找长度为O(log2n)
相关文章推荐
- 关于排序的总结---这个总是考总是忘的东西
- 最近玩了一下qt5.2.1,顺着写点东西,关于这个版本设置程序主窗口居中
- 我怎么做这个项目?——对《为什么我们程序员总是这么累、做出来的东西这么差? 》一文的回复
- (转)看到网上有很多关于这个的帖子,但在执行“设置test数据库为紧急修复模式”时,SQL Server 2008总是失败。哪位大侠给个SQLServer 2008的有效方法。
- 关于sizeof这个东西
- 我怎么做这个项目?——对《为什么我们程序员总是这么累、做出来的东西这么差? 》一文的回复
- 关于在适配器中更新ui的方法(写这个东西只是为了自己理解,不要看,大家看不懂)
- 关于意义这个东西
- 关于数据结构的一道题???大神教我这个菜鸟一下把
- 关于cocos2d这个东西
- [华硕UL] 求助关于AI RECOVERY RECOVERY, 求助 每次开机都会提示有AI RECOVERY REMIND 让做备份,不知道这个有什么用,是备份系统的隐藏分区还是别的东西
- 堆的数据结构能够使得堆顶总是维持最大(对于大根堆)或最小(对于小根堆),给定一个数组,对这个数组进行建堆,则平均复杂度是多少?如果只是用堆的 push 操作,则一个大根堆依次输入 3,7,2,4,1,5,8 后,得到的堆的结构示意图是下述图表中的哪个?
- 关于rails: 这个东西现在实用吗?
- 关于cocos2d这个东西
- 关于rem这个东西我要说一句
- 搜狗输入法组件功能,总是出现这个东西,点了不在对此程序显示此警告,没有用
- 我将msdn上一篇关于数据库打包的文章由vb改为cs拉,好久没发言了,希望这个东西对大家有用!
- 网上查了点关于windows注册表的知识,发现基本名词没理解好,于是整理这篇笔记(可能个别地方不准确,先这么理解吧),有了这个理解,再去看网上的文章,就差不读了
- Java你不得不知道的,却总是感到迷惑的东西
- 关于gridview获取当前行信息的这个古老的话题。