我想使用PHP构建二叉树。但由于PHP中没有指针,我如何构建一个树。
对于树中的每个节点,必须具有以下属性:
1。节点处的值
2。节点的级别
3。指向正确的孩子
4。指向左子的指针
但由于PHP中没有指针,我不知道如何以及从何处开始。我所知道的是,如果我们使用$ a =& $ b,那么两者都将指向同一个对象,它们不像C中的指针。 请建议我使用PHP构建二叉树的几种方法。
答案 0 :(得分:3)
诀窍是php数组可以将另一个数组作为元素。
不使用课程即可
$root = array(0,0)
$root[0] = $firstval; // Value
$root[1] = 0; // level 0
// first child on left
$lchild = array($lvalue,1); // left value and level 1
$root[2] = $lchild; // attach to root item
// first right child
$rchild = array($rvalue,1); // right value and level 1
$root[3] = $rchild; // attach to root item;
//print value of right child:-
print $root[3][0];
// or more usefull
$anode = $root[3];
print "Value " + $anode[0];
if (isset($anode[2]) ) {
print "has left child";
}
使用类,您只需定义一个类,其中包含值,级别,左侧分支的另一个类实例以及右侧分支的类的另一个实例。它实际上与上面的纯数组实现相同,但更容易阅读。
答案 1 :(得分:0)
使用列表/数组数据结构,只需指向列表中的项目即可。可以轻松计算列表中任何元素树的位置,因为二叉树每个新级别占用2,4,8,16个空格。所以你可以预先声明列表是两个长的因子。
或者使用PHP对象,它可以包装变量并像在java对象中一样初始化它们。
只有一个节点的树,其值为“13”,看起来像这样
13 null null null null null null null null null ...
一个头节点和左边有两个孩子的树看起来像这样
13 12 null 11 null null null null null null null null ...