前言
php的局限性导致部分数据结构比较难实现,最近面试问的较多的就是这个问题。现在总结了下
思路
还是需要约定特殊的规则,将有序数组变为二叉树结构。
代码如下
<?php
class myTreeNode
{
public $root;
public $left;
public $right;
}
class bulitTree
{
public $data;
function buildTree()
{
$v = array_shift($this->data);
if($v === '#'){
$Btree = NUll;
}else{
$Btree = new myTreeNode;
$Btree->root = $v;
$Btree->left = $this->buildTree($this->data);
$Btree->right = $this->buildTree($this->data);
}
return $Btree ;
}
}
$ar = array('A','B','#','D','#','#','C','#','#');
$obj = new bulitTree();
$obj->data = $ar;
$tree = $obj->buildTree($ar);
var_dump($tree);