首頁 >後端開發 >php教程 >php如何利用遞歸實現二元樹的創建

php如何利用遞歸實現二元樹的創建

不言
不言轉載
2018-09-30 14:24:422409瀏覽

這篇文章帶給大家的內容是關於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中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除