二叉树遍历算法
Jun 05, 2016 am 11:50 AM<p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 二叉树遍历,是值从根节点出发,按照某种次序依次访问二叉树中的所有节点,使得每个节点被访问一次且仅被访问依次。 </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;text-align:center;"> <img src="/static/imghw/default1.png" data-src="http://lanecn-upload.stor.sinaapp.com/image/20140709_1404896527_874807.gif" class="lazy" title="20140709_1404896527_874807.gif" alt="tupan062.gif" style="max-width:90%"> </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;text-align:center;"> 图是百度搜的。。。谢谢提供图的英雄。。 </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 前序遍历二叉树:如果二叉树为空则返回,若二叉树非空,则先遍历左树,再遍历右树,遍历顺序为ABCDEGF。 </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 中序遍历二叉树:如果二叉树为空则返回,若二叉树非空,则从根节点开始,中序遍历根节点的左子树,然后是访问根节点,最后中序遍历右子树,遍历顺序为CBEGDFA。 </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 后序遍历二叉树:如果二叉树为空则返回,若二叉树非空,则从左到右先叶子后节点的访问遍历访问左右子树,最后是访问根节点。访问顺序为CGEFDBA。 </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 层序遍历二叉树:如果二叉树为空则返回,若二叉树非空,则从树的第一层,也就是根节点开始访问,从上而下逐层遍历,在同一层中,按照从左到右的顺序对节点逐个访问。访问顺序为ABCDEFG。 </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> <br> </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 现在,我们用PHP代码,来遍历二叉树结构。二叉树是放一个大数组,每一个节点都有三个字段,data表示这个节点的值,lChild表示这个节点的左边子节点,rChild表示这个节点的右边子节点。二叉树的结构我们用上面那张图。 </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> <br> </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 二叉树结构代码如下: </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> <br> </p> <pre class='brush:php;toolbar:false;'> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> <br /> </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> <?php </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> //二叉树 </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> $arr = array( </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'data' => 'A', </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'lChild' => array( </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'data' => 'B', </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'lChild' => array( </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'data' => 'C', </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'lChild' => array(), </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'rChild' => array(), </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> ), </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'rChild' => array( </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'data' => 'D', </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'lChild' => array( </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'data' => 'E', </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'lChild' => array(), </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'rChild' => array( </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'data' => 'G', </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'lChild' => array(), </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'rChild' => array(), </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> ), </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> ), </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'rChild' => array( </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'data' => 'F', </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'lChild' => array(), </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'rChild' => array(), </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> ), </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> ), </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> ), </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> 'rChild' => array(), </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> ); </p> <p style="box-sizing:border-box;margin-top:0px;margin-bottom:10px;"> <br /> </p>
遍历算法一:前序遍历二叉树
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
|
遍历算法二:中序遍历二叉树
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
|
遍历算法三:后序遍历二叉树
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
|

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법

Laravel Back End : Part 2, React가있는 React 앱 구축
