使用PHP的二叉树

时间:2011-10-04 03:40:49

标签: php

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

但由于PHP中没有指针,我不知道如何以及从何处开始。我所知道的是,如果我们使用$ a =& $ b,那么两者都将指向同一个对象,它们不像C中的指针。 请建议我使用PHP构建二叉树的几种方法。

2 个答案:

答案 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 ...