這篇文章帶給大家的內容是關於php如何利用遞歸實現二元樹的創建,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
1.利用遞歸的原理,只不過在原來印結點的地方,改成了生成結點,給結點賦值的操作
if(ch=='#'){*T=NULL;}else{malloc();(*T)->data=ch;createFunc((*T)->lchild);createFunc((*T)->rchild);}
2.前序遍歷:先訪問根結點,前序遍歷左子樹,前序遍歷右子樹;中左右
#3.將二元樹中每個結點的空指針引出一個虛結點,其值為特定值#,處理二元樹為原二元樹的擴展二元樹,擴展二元樹做到一個遍歷序列確定一棵二元樹
<?php class BinTree{ public $data; public $left; public $right; } //前序遍历生成二叉树 function createBinTree(){ $handle=fopen("php://stdin","r"); $e=trim(fgets($handle)); if($e=="#"){ $binTree=null; }else{ $binTree=new BinTree(); $binTree->data=$e; $binTree->left=createBinTree(); $binTree->right=createBinTree(); } return $binTree; } $tree=createBinTree(); var_dump($tree); A B # D # # C # # object(BinTree)#1 (3) { ["data"]=> string(1) "A" ["left"]=> object(BinTree)#2 (3) { ["data"]=> string(1) "B" ["left"]=> NULL ["right"]=> object(BinTree)#3 (3) { ["data"]=> string(1) "D" ["left"]=> NULL ["right"]=> NULL } } ["right"]=> object(BinTree)#4 (3) { ["data"]=> string(1) "C" ["left"]=> NULL ["right"]=> NULL } }
以上是php如何利用遞歸實現二元樹的創建的詳細內容。更多資訊請關注PHP中文網其他相關文章!