使用PHP的二叉树
我想用PHP构建一个二叉树。但是,由于PHP中没有指针,如何构建树呢。 对于树中的每个节点,必须具有以下属性:使用PHP的二叉树,php,Php,我想用PHP构建一个二叉树。但是,由于PHP中没有指针,如何构建树呢。 对于树中的每个节点,必须具有以下属性: 1。节点上的值 2。节点的级别 3。指向右子对象的指针 4。指向左子对象的指针 但是由于PHP中没有指针,我不知道如何开始,从哪里开始。我所知道的是,如果我们使用$a=&$b,那么两者都将指向同一个对象,它们与C中的指针不同。 请向我推荐几种使用PHP构建二叉树的方法。使用列表/数组数据结构,只需指向列表中的项目即可。任何元素树在列表中的位置都可以很容易地计算出来,因为二叉树在每一个新
1。节点上的值
2。节点的级别
3。指向右子对象的指针
4。指向左子对象的指针 但是由于PHP中没有指针,我不知道如何开始,从哪里开始。我所知道的是,如果我们使用$a=&$b,那么两者都将指向同一个对象,它们与C中的指针不同。
请向我推荐几种使用PHP构建二叉树的方法。使用列表/数组数据结构,只需指向列表中的项目即可。任何元素树在列表中的位置都可以很容易地计算出来,因为二叉树在每一个新级别上占用2,4,8,16个空间。因此,您可以预先声明列表是两个长的因子 或者使用PHP对象,它可以像在java对象中一样包装变量并初始化它们 只有一个节点的树,其值为“13”,如下所示 13空空空空空空空空空 一棵树的左侧有一个头部节点和两个子节点,看起来像这样
13 12零11零零零零零零零零零 诀窍在于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";
}
对于类,您只需定义一个类,其中包含值、级别、左分支的另一个类实例和右分支的另一个类实例。它实际上与上面的纯数组实现相同,但更易于阅读。就级别和值而言,它很好,但我如何指向子节点。请帮助我。我曾经构建了一个php简单链表,可以打印节点和顺序插入。问题是,它没有对象和引用(因为没有指针)的C++方式,而不使用数组。它很简单,我相信你可以很容易地修改成一棵树,如果你想让我知道。