二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作「左子樹」(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...