二叉樹 php實現先序 中序 後序遍歷二叉樹

2021-08-10 06:43:45 字數 2522 閱讀 4865

二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作「左子樹」(left subtree)和「右子樹」(right subtree)。二叉樹常被用於實現二叉查詢樹和二叉堆

[php]

view plain

copy

<?php

classnode

//先序遍歷 根節點 ---> 左子樹 ---> 右子樹

functionpreorder(

$root

)if(

$center_node

->left!=null)}}

//中序遍歷,左子樹---> 根節點 ---> 右子樹

functioninorder(

$root

)$center_node

= array_pop(

$stack

);echo 

$center_node

->value . 

" ";

$center_node

= $center_node

->right;}}

//後序遍歷,左子樹 ---> 右子樹 ---> 根節點

functiontailorder(

$root

)if(

$center_node

->right!=null)

}while(!empty(

$outstack))}

$a=newnode();$b=

newnode();$c=

newnode();$d=

newnode();$e=

newnode();$f=

newnode();

$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 '';

inorder(

$a);

//d b a e c f

echo '';

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

本回答由提問者推薦

答案糾錯|

139111

其他回答

前序遍歷: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實現先序 中序 後序遍歷二叉樹

二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作 左子樹 left subtree 和 右子樹 right subtree 二叉樹常被用於實現二叉查詢樹和二叉堆 先序遍歷 根節點 左子樹 右子樹 8function preorder root 17 if center node left nu...

二叉樹 先序 中序 後序

同學整理的,順便傳上分享下 一,已知先序和中序 求後序 1 include2 include3 include4 using namespace std 5char s1 10 s2 10 ans 10 6 int o 0 7 void tree int n char s1 char s2 char...

中序後序,中序先序求二叉樹

用後序,中序求二叉樹 includeusing namespace std int n int a 105 b 105 mapl,r int build int la,int ra,int lb,int rb 再在中序中找到這個數的位置 if i rb return root queueq void...