标签:rate 问题 两种 目标 二叉查找树 节点 ima 基本原理 9.png
本章的内容主要讲二叉查找树,二叉查找树是对于二叉树的一种拓展,这意味着上一章中对于二叉树的操作对于二叉查找树同样适用,同时它也是一种带有附加属性的二叉树。这种附加属性即:对树中的每个结点,它的左孩子都要小于其父结点,而父结点又小于或等于它的右孩子。这意味着在所有比根结点大的元素都存在于根结点的左边,而比根结点小的元素都在根结点的右边。如图所示:
值得一提的是,对二叉查找树进行中序遍历,正好可以得到一队递增排序的元素。
例如,对于之前所示二叉查找树进行中序遍历可以等到:1,3,4,6,7,8,10,13,14。
例如,查找10
1.查看根节点9:
2.由于10 > 9,因此查看右孩子13:
3.由于10 < 13,因此查看左孩子11:
4.由于10 < 11,因此查看左孩子10,发现10正是要查找的节点:
addElement
方法就可以把一个元素插入正确的位置。具体的解决方案是:
null
即可。平衡二叉查找树,它存在的意义在于提升效率,例如,一棵蜕化树看起来更像一个链表但是它的效率比链表还差。
如图所示,
在提到四种方法之前,有一个概念需要理解,一个平衡二叉查找树的最大路径长度应该为log2n(n为元素个数),并且最长路径必须不小于log2n-1(n为元素个数),如果一个树的最长查找路径大于log2n则表明它不平衡,这时候就需要一定的操作使其平衡。
右旋,通常是指左孩子绕着其父结点向右旋转,一般适用于左子树长于右子树的情况
左旋,通常是指右孩子绕着其父结点向左旋转,一般适用于右子树长于左子树的情况
AVL树,在之前的基础上添加了平衡因子的说法,即左右子树的高度差,如果高度差大于1或者小于-1,则以该结点为树根的子树需要重新平衡。
红黑树的删除,与插入类似,删除一个元素后有极大可能需要一系列操作以再次平衡红黑树。
addElement(T element)
一样。addElement(T element)
这个方法只能一直添加元素,但不能使得元素成为平衡树,就好像如果一直利用这个方法添加递减的元素会导致蜕化树的出现。错题1解析:平衡树查找的时间复杂度就是O(logn)。
错题2是那一道没有图的题。
(本部分用于收集本章节后的生词)
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/5000 | 2/2 | 8/8 | 认真学习!积极向上 |
第二周 | 812/812 | 1/3 | 22/30 | |
第三周 | 814/1626 | 1/4 | 20/50 | |
第四周 | 1386/3012 | 2/6 | 20/70 | 愉快的国庆节就要结束了... |
第五周 | 1222/3234 | 1/7 | 30/100 | |
第六周 | 1327/4561 | 2/7 | 30/100 | 啦啦啦啦啦 |
第七周 | 1170/5631 | 1/8 | 33/133 |
计划学习时间:25小时
实际学习时间:33小时
改进情况:规范commit行为,改进博客园模版。
标签:rate 问题 两种 目标 二叉查找树 节点 ima 基本原理 9.png
原文地址:https://www.cnblogs.com/zhangyeye233/p/9898940.html