您的位置:首页 > 理论基础 > 数据结构算法

关于数据结构中的树--这个我总是学总是忘的东西

2010-07-12 22:44 176 查看
由二叉树的前序和中序遍历结果可以推出整个二叉树的结构;进而可以得到后序遍历的结果。类似的,由后序,中序可以推出二叉树结构。唯独由前序,后序不能推出中序。为什么呢?我想了下,原因很显然,前序中可以明确知道根节点是第一个元素,后序中也只能确定根结点,这样就不能确定左子树和右子树各是哪些元素了。而有了中序遍历的结果就不同了,因为中序遍历可以用已知的根结点将遍历分成左右两部分。

根据1中的总结,总结一下,如何根据前序遍历和中序遍历的结果将树重构出来。首先,根结点一定是前序遍历的第一个元素,好吧,找到它,然后看在中序遍历中这个元素位于哪里。那么这个元素可以把中序遍历分为左右两个子树。以此类推,可以在纸上很容易就画出树。然后得出它的后序遍历的结果。

二叉树的概念:不能理解为一种特殊的树,因为它跟树是不同的。首先,二叉树可以为空,其次,有“次序”,也就是说有一些结构看起来不同,但是在树里可能就是相同的结构,而在二叉树里视为不同的结构。二叉树就是度最大为2,有左右子树之分,次序不能任意颠倒。

完全二叉树:每一层次的节点可以与满二叉树编号的结点一一对应。

满二叉树:每一层次上的节点数目达到最大的二叉树。满二叉树当然是完全二叉树。

平衡二叉树

二叉树的存储结构有两种。一种是顺序的,也就是按树的层次,从根结点开始一层一层遍历,将结点的值存到数组里,遇到一层上结点为空则用0代替;另一种是链式的存储,一般是定义一个结构体,包括value,左孩子,右孩子。还有一种是多了一个指向根结点的指针。

二叉树的一些特性总结,见严蔚敏的数据结构书123页

堆其实就是一种完全二叉树。只是根的关键字一定小于或等于它的孩子结点的关键字。

根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最小者的堆称为小根堆,又称最小堆.
根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最大者,称为大根堆,又称最大堆.
注意:
①堆中任一子树亦是堆。
②以上讨论的堆实际上是二叉堆(Binary Heap),类似地可定义k叉堆。

二叉查找树的平均查找长度为O(log2n)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐