Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP的二叉树_Php - Fatal编程技术网

使用PHP的二叉树

使用PHP的二叉树,php,Php,我想用PHP构建一个二叉树。但是,由于PHP中没有指针,如何构建树呢。 对于树中的每个节点,必须具有以下属性: 1。节点上的值 2。节点的级别 3。指向右子对象的指针 4。指向左子对象的指针 但是由于PHP中没有指针,我不知道如何开始,从哪里开始。我所知道的是,如果我们使用$a=&$b,那么两者都将指向同一个对象,它们与C中的指针不同。 请向我推荐几种使用PHP构建二叉树的方法。使用列表/数组数据结构,只需指向列表中的项目即可。任何元素树在列表中的位置都可以很容易地计算出来,因为二叉树在每一个新

我想用PHP构建一个二叉树。但是,由于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++方式,而不使用数组。它很简单,我相信你可以很容易地修改成一棵树,如果你想让我知道。