This commit is contained in:
krahets
2023-08-19 19:21:30 +08:00
parent 5884de5246
commit c2642f951c
25 changed files with 163 additions and 110 deletions

View File

@@ -4575,6 +4575,8 @@
<p align="center">AVL 树的四种旋转情况 </p>
<p>在代码中,我们通过判断失衡节点的平衡因子以及较高一侧子节点的平衡因子的正负号,来确定失衡节点属于上图中的哪种情况。</p>
<p align="center"> 表:四种旋转情况的选择条件 </p>
<div class="center-table">
<table>
<thead>
@@ -4586,22 +4588,22 @@
</thead>
<tbody>
<tr>
<td><span class="arithmatex">\(&gt;1\)</span> (即左偏树)</td>
<td><span class="arithmatex">\(&gt; 1\)</span> (即左偏树)</td>
<td><span class="arithmatex">\(\geq 0\)</span></td>
<td>右旋</td>
</tr>
<tr>
<td><span class="arithmatex">\(&gt;1\)</span> (即左偏树)</td>
<td><span class="arithmatex">\(&gt; 1\)</span> (即左偏树)</td>
<td><span class="arithmatex">\(&lt;0\)</span></td>
<td>先左旋后右旋</td>
</tr>
<tr>
<td><span class="arithmatex">\(&lt;-1\)</span> (即右偏树)</td>
<td><span class="arithmatex">\(&lt; -1\)</span> (即右偏树)</td>
<td><span class="arithmatex">\(\leq 0\)</span></td>
<td>左旋</td>
</tr>
<tr>
<td><span class="arithmatex">\(&lt;-1\)</span> (即右偏树)</td>
<td><span class="arithmatex">\(&lt; -1\)</span> (即右偏树)</td>
<td><span class="arithmatex">\(&gt;0\)</span></td>
<td>先右旋后左旋</td>
</tr>

View File

@@ -4907,6 +4907,8 @@ void insert(int num) {
<h2 id="742">7.4.2. &nbsp; 二叉搜索树的效率<a class="headerlink" href="#742" title="Permanent link">&para;</a></h2>
<p>给定一组数据,我们考虑使用数组或二叉搜索树存储。</p>
<p>观察可知,二叉搜索树的各项操作的时间复杂度都是对数阶,具有稳定且高效的性能表现。只有在高频添加、低频查找删除的数据适用场景下,数组比二叉搜索树的效率更高。</p>
<p align="center"> 表:数组与搜索树的效率对比 </p>
<div class="center-table">
<table>
<thead>

View File

@@ -3987,6 +3987,8 @@
<p align="center"> 图:二叉树的最佳与最差结构 </p>
<p>如下表所示,在最佳和最差结构下,二叉树的叶节点数量、节点总数、高度等达到极大或极小值。</p>
<p align="center"> 表:二叉树的最佳与最差情况 </p>
<div class="center-table">
<table>
<thead>
@@ -4003,17 +4005,17 @@
<td><span class="arithmatex">\(1\)</span></td>
</tr>
<tr>
<td>树的高度 <span class="arithmatex">\(h\)</span> 的叶节点数量</td>
<td>高度 <span class="arithmatex">\(h\)</span> 的叶节点数量</td>
<td><span class="arithmatex">\(2^h\)</span></td>
<td><span class="arithmatex">\(1\)</span></td>
</tr>
<tr>
<td>树的高度 <span class="arithmatex">\(h\)</span> 的节点总数</td>
<td>高度 <span class="arithmatex">\(h\)</span> 的节点总数</td>
<td><span class="arithmatex">\(2^{h+1} - 1\)</span></td>
<td><span class="arithmatex">\(h + 1\)</span></td>
</tr>
<tr>
<td>树的节点总数 <span class="arithmatex">\(n\)</span> 的高度</td>
<td>节点总数 <span class="arithmatex">\(n\)</span> 的高度</td>
<td><span class="arithmatex">\(\log_2 (n+1) - 1\)</span></td>
<td><span class="arithmatex">\(n - 1\)</span></td>
</tr>

View File

@@ -3445,6 +3445,10 @@
</ul>
<p>因此如果要对比值,我们通常会用 <code>equals()</code> 。然而,通过 <code>String a = "hi"; String b = "hi";</code> 初始化的字符串都存储在字符串常量池中,它们指向同一个对象,因此也可以用 <code>a == b</code> 来比较两个字符串的内容。</p>
</div>
<div class="admonition question">
<p class="admonition-title">广度优先遍历到最底层之前,队列中的节点数量是 <span class="arithmatex">\(2^h\)</span> 吗?</p>
<p>是的,例如高度 <span class="arithmatex">\(h = 2\)</span> 的满二叉树,其节点总数 <span class="arithmatex">\(n = 7\)</span> ,则底层节点数量 <span class="arithmatex">\(4 = 2^h = (n + 1) / 2\)</span></p>
</div>