日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

二叉树 -php实现先序、中序、后序遍历二叉树

發布時間:2025/5/22 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二叉树 -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实现先序、中序、后序遍历二叉树的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。