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 ); |
1 | 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 } } |
原文出处:https://www.cnblogs.com/taoshihan/p/9558899.html
點(diǎn)擊查看更多內(nèi)容
為 TA 點(diǎn)贊
評(píng)論
評(píng)論
共同學(xué)習(xí),寫下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦