二叉树的创建PHP实现
程序员文章站
2022-07-02 14:37:37
1.利用递归的原理,只不过在原来打印结点的地方,改成了生成结点,给结点赋值的操作if(ch=='#'){*T=NULL;}else{malloc();(*T)->data=ch;createFunc((*T)->lchild);createFunc((*T)->rchild);} 2.前序遍历:先访 ......
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
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
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
}
}