php如何实现二叉树的创建(代码实例)
来源:不言
发布时间:2018-11-21 11:47:28
阅读量:784
本篇文章给大家带来的内容是关于php如何实现二叉树的创建(代码实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
1、利用递归的原理,只不过在原来打印结点的地方,改成了生成结点,给结点赋值的操作
if(ch=='#'){*T=NULL;}else{malloc();(*T)->data=ch;createFunc((*T)->lchild);createFunc((*T)->rchild);}
2.前序遍历:先访问根结点,前序遍历左子树,前序遍历右子树;中左右
3.将二叉树中每个结点的空指针引出一个虚结点,其值为特定值#,处理二叉树为原二叉树的扩展二叉树,扩展二叉树做到一个遍历序列确定一棵二叉树
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | <?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 );
#
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
}
}
|