二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作「左子樹」(left subtree)和「右子樹」(right subtree)。
* php遞迴方法方法實現前序、中序、後序遍歷二叉樹
* 二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作"左子樹"(left subtree)和"右子樹"(right subtree)
* */class
binarytree1/**
* 前序遍歷
* 根節點 ---> 左子樹 ---> 右子樹 */
function preorder($root)
echo $root->value . '
';//
輸出根節點
preorder($root->left);
preorder($root->right);}/*
* * 中序遍歷
* 左子樹---> 根節點 ---> 右子樹 */
function inorder($root)
inorder($root->left);
echo $root->value . '
';//
輸出根節點
inorder($root->right);}/*
* * 後序遍歷
* 左子樹 ---> 右子樹 ---> 根節點 */
function tailorder($root)
tailorder($root->left);
tailorder($root->right);
echo $root->value . '
';//
輸出根節點}//
測試$a = new
binarytree1();
$b = new
binarytree1();
$c = new
binarytree1();
$d = new
binarytree1();
$e = new
binarytree1();
$f = new
binarytree1();
$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;
echo
"php遞迴方法實現前序、中序、後序遍歷二叉樹: \n";
echo
"前序遍歷:";
preorder($a);
//a b d c e f
echo "\n"
;echo
"中序遍歷:";
inorder($a);
//d b a e c f
echo "\n"
;echo
"後序遍歷:";
tailorder($a);
//d b e f c a
echo "
\n";
結果:
前序 中序 後序 非遞迴 實現
1.簡述 void preorder node root 3.中序非遞迴 前序中的root主要作為中間變數使用。這裡的root的意義是下乙個要進棧的結點,初始值為根結點。while root不為空 棧不為空 void inorder node root else 4.後序非遞迴 root表示下乙個要...
前序 中序 後序 非遞迴 實現
1.簡述 void preorder node root 3.中序非遞迴 前序中的root主要作為中間變數使用。這裡的root的意義是下乙個要進棧的結點,初始值為根結點。while root不為空 棧不為空 else 4.後序非遞迴 root表示下乙個要處理的結點,初始化為根結點,per表示上一次剛...
前序中序後序遍歷遞迴非遞迴實現
根 左兒子 右兒子 definition for binary tree struct treenode void preorder treenode root,vector v 非遞迴遍歷時就是模擬棧,注意入棧順序即可 void preorder treenode root,vector v 左二...