mirror of
https://github.com/krahets/hello-algo.git
synced 2026-04-01 17:53:18 +08:00
deploy
This commit is contained in:
@@ -3384,7 +3384,7 @@
|
||||
<p class="admonition-title">Question</p>
|
||||
<p>给定一个二叉树的前序遍历 <code>preorder</code> 和中序遍历 <code>inorder</code> ,请从中构建二叉树,返回二叉树的根节点。假设二叉树中没有值重复的节点。</p>
|
||||
</div>
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/build_tree_example.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="构建二叉树的示例数据" src="../build_binary_tree_problem.assets/build_tree_example.png" /></a></p>
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/build_tree_example.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="构建二叉树的示例数据" class="animation-figure" src="../build_binary_tree_problem.assets/build_tree_example.png" /></a></p>
|
||||
<p align="center"> 图 12-5 构建二叉树的示例数据 </p>
|
||||
|
||||
<h3 id="1">1. 判断是否为分治问题<a class="headerlink" href="#1" title="Permanent link">¶</a></h3>
|
||||
@@ -3407,7 +3407,7 @@
|
||||
<li>查找根节点 3 在 <code>inorder</code> 中的索引,利用该索引可将 <code>inorder</code> 划分为 <code>[ 9 | 3 | 1 2 7 ]</code> 。</li>
|
||||
<li>根据 <code>inorder</code> 划分结果,易得左子树和右子树的节点数量分别为 1 和 3 ,从而可将 <code>preorder</code> 划分为 <code>[ 3 | 9 | 2 1 7 ]</code> 。</li>
|
||||
</ol>
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/build_tree_preorder_inorder_division.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="在前序和中序遍历中划分子树" src="../build_binary_tree_problem.assets/build_tree_preorder_inorder_division.png" /></a></p>
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/build_tree_preorder_inorder_division.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="在前序和中序遍历中划分子树" class="animation-figure" src="../build_binary_tree_problem.assets/build_tree_preorder_inorder_division.png" /></a></p>
|
||||
<p align="center"> 图 12-6 在前序和中序遍历中划分子树 </p>
|
||||
|
||||
<h3 id="3">3. 基于变量描述子树区间<a class="headerlink" href="#3" title="Permanent link">¶</a></h3>
|
||||
@@ -3449,7 +3449,7 @@
|
||||
</table>
|
||||
</div>
|
||||
<p>请注意,右子树根节点索引中的 <span class="arithmatex">\((m-l)\)</span> 的含义是“左子树的节点数量”,建议配合图 12-7 理解。</p>
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/build_tree_division_pointers.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="根节点和左右子树的索引区间表示" src="../build_binary_tree_problem.assets/build_tree_division_pointers.png" /></a></p>
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/build_tree_division_pointers.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="根节点和左右子树的索引区间表示" class="animation-figure" src="../build_binary_tree_problem.assets/build_tree_division_pointers.png" /></a></p>
|
||||
<p align="center"> 图 12-7 根节点和左右子树的索引区间表示 </p>
|
||||
|
||||
<h3 id="4">4. 代码实现<a class="headerlink" href="#4" title="Permanent link">¶</a></h3>
|
||||
@@ -3812,38 +3812,38 @@
|
||||
<div class="tabbed-set tabbed-alternate" data-tabs="2:9"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><input id="__tabbed_2_3" name="__tabbed_2" type="radio" /><input id="__tabbed_2_4" name="__tabbed_2" type="radio" /><input id="__tabbed_2_5" name="__tabbed_2" type="radio" /><input id="__tabbed_2_6" name="__tabbed_2" type="radio" /><input id="__tabbed_2_7" name="__tabbed_2" type="radio" /><input id="__tabbed_2_8" name="__tabbed_2" type="radio" /><input id="__tabbed_2_9" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1"><1></label><label for="__tabbed_2_2"><2></label><label for="__tabbed_2_3"><3></label><label for="__tabbed_2_4"><4></label><label for="__tabbed_2_5"><5></label><label for="__tabbed_2_6"><6></label><label for="__tabbed_2_7"><7></label><label for="__tabbed_2_8"><8></label><label for="__tabbed_2_9"><9></label></div>
|
||||
<div class="tabbed-content">
|
||||
<div class="tabbed-block">
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/built_tree_step1.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="构建二叉树的递归过程" src="../build_binary_tree_problem.assets/built_tree_step1.png" /></a></p>
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/built_tree_step1.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="构建二叉树的递归过程" class="animation-figure" src="../build_binary_tree_problem.assets/built_tree_step1.png" /></a></p>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/built_tree_step2.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="built_tree_step2" src="../build_binary_tree_problem.assets/built_tree_step2.png" /></a></p>
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/built_tree_step2.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="built_tree_step2" class="animation-figure" src="../build_binary_tree_problem.assets/built_tree_step2.png" /></a></p>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/built_tree_step3.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="built_tree_step3" src="../build_binary_tree_problem.assets/built_tree_step3.png" /></a></p>
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/built_tree_step3.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="built_tree_step3" class="animation-figure" src="../build_binary_tree_problem.assets/built_tree_step3.png" /></a></p>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/built_tree_step4.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="built_tree_step4" src="../build_binary_tree_problem.assets/built_tree_step4.png" /></a></p>
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/built_tree_step4.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="built_tree_step4" class="animation-figure" src="../build_binary_tree_problem.assets/built_tree_step4.png" /></a></p>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/built_tree_step5.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="built_tree_step5" src="../build_binary_tree_problem.assets/built_tree_step5.png" /></a></p>
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/built_tree_step5.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="built_tree_step5" class="animation-figure" src="../build_binary_tree_problem.assets/built_tree_step5.png" /></a></p>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/built_tree_step6.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="built_tree_step6" src="../build_binary_tree_problem.assets/built_tree_step6.png" /></a></p>
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/built_tree_step6.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="built_tree_step6" class="animation-figure" src="../build_binary_tree_problem.assets/built_tree_step6.png" /></a></p>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/built_tree_step7.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="built_tree_step7" src="../build_binary_tree_problem.assets/built_tree_step7.png" /></a></p>
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/built_tree_step7.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="built_tree_step7" class="animation-figure" src="../build_binary_tree_problem.assets/built_tree_step7.png" /></a></p>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/built_tree_step8.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="built_tree_step8" src="../build_binary_tree_problem.assets/built_tree_step8.png" /></a></p>
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/built_tree_step8.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="built_tree_step8" class="animation-figure" src="../build_binary_tree_problem.assets/built_tree_step8.png" /></a></p>
|
||||
</div>
|
||||
<div class="tabbed-block">
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/built_tree_step9.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="built_tree_step9" src="../build_binary_tree_problem.assets/built_tree_step9.png" /></a></p>
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/built_tree_step9.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="built_tree_step9" class="animation-figure" src="../build_binary_tree_problem.assets/built_tree_step9.png" /></a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p align="center"> 图 12-8 构建二叉树的递归过程 </p>
|
||||
|
||||
<p>每个递归函数内的前序遍历 <code>preorder</code> 和中序遍历 <code>inorder</code> 的划分结果如图 12-9 所示。</p>
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/built_tree_overall.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="每个递归函数中的划分结果" src="../build_binary_tree_problem.assets/built_tree_overall.png" /></a></p>
|
||||
<p><a class="glightbox" href="../build_binary_tree_problem.assets/built_tree_overall.png" data-type="image" data-width="100%" data-height="auto" data-desc-position="bottom"><img alt="每个递归函数中的划分结果" class="animation-figure" src="../build_binary_tree_problem.assets/built_tree_overall.png" /></a></p>
|
||||
<p align="center"> 图 12-9 每个递归函数中的划分结果 </p>
|
||||
|
||||
<p>设树的节点数量为 <span class="arithmatex">\(n\)</span> ,初始化每一个节点(执行一个递归函数 <code>dfs()</code> )使用 <span class="arithmatex">\(O(1)\)</span> 时间。<strong>因此总体时间复杂度为 <span class="arithmatex">\(O(n)\)</span></strong> 。</p>
|
||||
|
||||
Reference in New Issue
Block a user