二叉树 -php实现先序、中序、后序遍历二叉树
生活随笔
收集整理的這篇文章主要介紹了
二叉树 -php实现先序、中序、后序遍历二叉树
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作“左子樹”(left subtree)和“右子樹”(right subtree)。二叉樹常被用于實現二叉查找樹和二叉堆
[php] view plain copy <?php class?Node{ public?$value; public?$left; public?$right; } //先序遍歷 根節點 ---> 左子樹 ---> 右子樹 function?preorder($root){ $stack=array(); array_push($stack,$root); while(!empty($stack)){ $center_node=array_pop($stack); echo?$center_node->value.' ';//先輸出根節點 if($center_node->right!=null){ array_push($stack,$center_node->right);//壓入左子樹 } if($center_node->left!=null){ array_push($stack,$center_node->left); } } } //中序遍歷,左子樹---> 根節點 ---> 右子樹 function?inorder($root){ $stack?=?array(); $center_node?=?$root; while?(!empty($stack) ||?$center_node?!= null) { while?($center_node?!= null) { array_push($stack,?$center_node); $center_node?=?$center_node->left; } $center_node?= array_pop($stack); echo?$center_node->value .?" "; $center_node?=?$center_node->right; } } //后序遍歷,左子樹 ---> 右子樹 ---> 根節點 function?tailorder($root){ $stack=array(); $outstack=array(); array_push($stack,$root); while(!empty($stack)){ $center_node=array_pop($stack); array_push($outstack,$center_node);//最先壓入根節點,最后輸出 if($center_node->left!=null){ array_push($stack,$center_node->left); } if($center_node->right!=null){ array_push($stack,$center_node->right); } } while(!empty($outstack)){ $center_node=array_pop($outstack); echo?$center_node->value.' '; } } $a=new?Node(); $b=new?Node(); $c=new?Node(); $d=new?Node(); $e=new?Node(); $f=new?Node(); $a->value='A'; $b->value='B'; $c->value='C'; $d->value='D'; $e->value='E'; $f->value='F'; $a->left=$b; $a->right=$c; $b->left=$d; $c->left=$e; $c->right=$f; preorder($a);//A B D C E F echo?'<hr/>'; inorder($a);//D B A E C F echo?'<hr/>'; tailorder($a);//D B E F C A
結果: A B D C E F
D B A E C F
D B E F C A
二叉樹的三種遍歷,先,中,后遍歷 10
先序就是先遍歷根,再遍歷左子樹,再遍歷右子樹。例如上圖的先序遍歷是:ABCDEFGHK 中序就是先遍歷左子樹,再遍歷根,再右子樹。例如上圖的中序遍歷是:BDCAEHGKF 后序就是先遍歷左子樹,再右子樹,再根。例如上圖的后序遍歷是:DCBHKGFEA
本回答由提問者推薦 答案糾錯 | 評論(4) 139 111 其他回答 前序遍歷:ABDECFG 中序遍歷:DBEAFCG 后序遍歷:DEBFGCA
前序遍歷:1 2 4 3 5 7 6 中序遍歷:2 4 1 5 7 3 6 后序遍歷:4 2 7 5 6 3 1
做類似的題目,你可以先由兩個遍歷畫出二叉樹。通過形象的二叉樹來寫出另一個遍歷,寫的方法如上(遞歸)。畫出二叉樹的方法如下:
已知一棵二叉樹的前序序列和中序序列,構造該二叉樹的過程如下: 1. 根據前序序列的第一個元素建立根結點; 2. 在中序序列中找到該元素,確定根結點的左右子樹的中序序列; 3. 在前序序列中確定左右子樹的前序序列; 4. 由左子樹的前序序列和中序序列建立左子樹; 5. 由右子樹的前序序列和中序序列建立右子樹。
已知一棵二叉樹的后序序列和中序序列,構造該二叉樹的過程如下: 1. 根據后序序列的最后一個元素建立根結點; 2. 在中序序列中找到該元素,確定根結點的左右子樹的中序序列; 3. 在后序序列中確定左右子樹的后序序列; 4. 由左子樹的后序序列和中序序列建立左子樹; 5. 由右子樹的后序序列和中序序列建立右子樹。
[php] view plain copy
結果: A B D C E F
D B A E C F
D B E F C A
二叉樹的三種遍歷,先,中,后遍歷 10
先序就是先遍歷根,再遍歷左子樹,再遍歷右子樹。例如上圖的先序遍歷是:ABCDEFGHK 中序就是先遍歷左子樹,再遍歷根,再右子樹。例如上圖的中序遍歷是:BDCAEHGKF 后序就是先遍歷左子樹,再右子樹,再根。例如上圖的后序遍歷是:DCBHKGFEA
本回答由提問者推薦 答案糾錯 | 評論(4) 139 111 其他回答 前序遍歷:ABDECFG 中序遍歷:DBEAFCG 后序遍歷:DEBFGCA
前序遍歷:1 2 4 3 5 7 6 中序遍歷:2 4 1 5 7 3 6 后序遍歷:4 2 7 5 6 3 1
做類似的題目,你可以先由兩個遍歷畫出二叉樹。通過形象的二叉樹來寫出另一個遍歷,寫的方法如上(遞歸)。畫出二叉樹的方法如下:
已知一棵二叉樹的前序序列和中序序列,構造該二叉樹的過程如下: 1. 根據前序序列的第一個元素建立根結點; 2. 在中序序列中找到該元素,確定根結點的左右子樹的中序序列; 3. 在前序序列中確定左右子樹的前序序列; 4. 由左子樹的前序序列和中序序列建立左子樹; 5. 由右子樹的前序序列和中序序列建立右子樹。
已知一棵二叉樹的后序序列和中序序列,構造該二叉樹的過程如下: 1. 根據后序序列的最后一個元素建立根結點; 2. 在中序序列中找到該元素,確定根結點的左右子樹的中序序列; 3. 在后序序列中確定左右子樹的后序序列; 4. 由左子樹的后序序列和中序序列建立左子樹; 5. 由右子樹的后序序列和中序序列建立右子樹。
總結
以上是生活随笔為你收集整理的二叉树 -php实现先序、中序、后序遍历二叉树的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 几道大数据面试题
- 下一篇: Vidda&nbsp;海信&am