二叉树使用PHP


Binary tree using PHP

我想用PHP构建一个二叉树。但是由于PHP中没有指针,我如何构建树呢?对于树中的每个节点,必须有以下属性:
1。节点上的值
2。节点级别
3。指向右子节点的指针
4。指向左子节点的指针

但是由于PHP中没有指针,我不知道如何以及从哪里开始。我所知道的是,如果我们使用$a=&$b,那么两者将指向同一个对象,它们不像C中的指针。

技巧在于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";
}

对于类,您只需定义一个包含值、级别、左分支类的另一个实例和右分支类的另一个实例的类。它实际上与上面的纯数组实现相同,但更容易阅读。

使用列表/数组数据结构,并简单地指向列表中的项。列表中任何元素树的位置都可以很容易地计算出来,因为二叉树为每个新层占用2,4,8,16个空间。所以你可以预先声明列表的长度是2倍。

或使用PHP对象,它可以像java对象一样包装变量并初始化它们。

一个只有一个节点的树,其值为"13",看起来像这样

13 null null null null null null null null null null null null

有一个头节点和两个子节点在它左边的树看起来像这样

13 12 null 11 null null null null null null null null null null null