树——二叉树的先序、中序和后序遍历

论坛 期权论坛     
选择匿名的用户   2021-5-30 11:17   143   0
<div class="blogpost-body" id="cnblogs_post_body">
<p>1,二叉树是否只有一种遍历方式(层次遍历)?</p>
<p> </p>
<p>2,典型的二叉树的遍历方式:</p>
<p>       1,先序遍历(Pre-Order Traversal);</p>
<p>       2,中序遍历(In-Order Traversal);</p>
<p>       3,后序遍历(Post-Order Traversal);    </p>
<p> </p>
<p>3,先序遍历(“先序”指最先访问根结点中的数据元素):</p>
<p>  1,二叉树为空:</p>
<p>              1,无操作,直接返回;</p>
<p>       2,二叉树不为空:</p>
<p>              1,访问根结点中的数据元素;</p>
<p>              2,先序遍历左子树;</p>
<p>              3,先序遍历右子树;</p>
<p style="text-align:center;"> <img alt="" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-5179a8e9d017e2766689240be6b29cd6.png"> </p>
<p>             </p>
<p>4,先序遍历功能定义及其代码实现:</p>
<p>       1,代码示例:</p>
<div class="cnblogs_code">
  <pre class="blockcode"><span style="color:#008080;">1</span>    <span style="color:#000000;">preOrderTraversal(node)
</span><span style="color:#008080;">2</span> <span style="color:#000000;">       {
</span><span style="color:#008080;">3</span>            <span style="color:#0000ff;">if</span>( noe !&#61;<span style="color:#000000;"> NULL )
</span><span style="color:#008080;">4</span> <span style="color:#000000;">           {
</span><span style="color:#008080;">5</span>                access(node-&gt;<span style="color:#000000;">value);
</span><span style="color:#008080;">6</span>                preOrderTraversal(node-&gt;<span style="color:#000000;">left);
</span><span style="color:#008080;">7</span>                preOrderTraversal(node-&gt;<span style="color:#000000;">right);
</span><span style="color:#008080;">8</span> <span style="color:#000000;">           }
</span><span style="color:#008080;">9</span>        }</pre>
</div>
<p>  2,功能函数代码实现:</p>
<div class="cnblogs_code">
  <pre class="blockcode"><span style="color:#008080;"> 1</span>    <span style="color:#008000;">/*</span><span style="color:#008000;"> 实现先序遍历,队里里面保存的数据元素用来反应遍历时候结点次序 </span><span style="color:#008000;">*/</span>
<span style="color:#008080;"> 2</span>     <span style="color:#0000ff;">void</span> PreOrderTraversal(BTreeNode&lt;T&gt;* node, LinkQueue&lt;BTreeNode&lt;T&gt;*&gt;&amp;<span style="color:#000000;"> queue)
</span><span style="color:#008080;"> 3</span> <span style="color:#000000;">    {
</span><span style="color:#008080;"> 4</span>         <span style="color:#0000ff;">if</span>( node !&#61;<span style="color:#000000;"> NULL )
</span><span style="color:#008080;"> 5</span> <span style="color:#000000;">        {
</span><span style="color:#008080;"> 6</span>             queue.add(node);  <span style="color:#008000;">//</span><span style="color:#008000;"> 访问中间结点</span>
<span style="color:#008080;"> 7</span>             PreOrderTraversal(node-&gt;<span style="color:#000000;">left, queue);
</span><span style="color:#008080;"> 8</span>             PreOrderTraversal(node-&gt;<span style="color:#000000;">right, queue);
</span><span style="color:#008080;"> 9</span> <span style="color:#000000;">        }
</span><span style="color:#008080;">10</span>     }</pre>
</div>
<p>      </p>
<p>5,中序遍历(“中序”指中间访问根结点中的数据元素):</p>
<p>  1,二叉树为空:</p>
<p>              1,无操作,直接返回;</p>
<p>       2,二叉树不为空:</p>
<p>              1,中序遍历左子树;</p>
<p>              2,访问根结点中的数据元素;</p>
<p>              3,中序遍历右子树;</p>
<p style="text-align:center;"> <img alt="" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-d1a3082d251310c6dacd304dcfad4677.png"></p>
<p>             </p>
<p>6,中序遍历功能定义:</p>
<p>       1,代码示例:</p>
<div class="cnblogs_code">
  <pre class="blockcode"><span style="color:#008080;">1</span>    <span style="color:#000000;">inOrderTraversal(node)
</span><span style="color:#008080;">2</span> <span style="color:#000000;">       {
</span><span style="color:#008080;">3</span>            <span style="color:#0000ff;">if</span>(node !&#61;<span style="color:#000000;"> NULL)
</span><span style="color:#008080;">4</span> <span style="color:#000000;">           {
</span><span style="color:#008080;">5</span>                inOrderTraversal(node-&gt;<span style="color:#000000;">left);
</span><span style="color:#008080;">6</span>                access(node-&gt;<span style="color:#000000;">value);
</span><span style="color:#008080;">7</span>                inOrderTraversal(node-&gt;<span style="color:#000000;">right);
</span><span style="color:#008080;">8</span> <span style="color:#000000;">           }
</span><span style="color:#008080;">9</span>        }</pre>
</div>
<p>  2,功能函
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP