PHP遞迴方法實現前序 中序 後序遍歷二叉樹

2022-07-02 18:54:10 字數 1821 閱讀 8532

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