如何在PHP中构造一个二叉树算法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
树(Tree)在数据结构还是很重要的,这里表示二叉树用括号表示法表示。先写一个二叉树节点类:
// 二叉树节点
class BTNode {
public $data;
public $lchild = NULL;
public $rchild = NULL;
public function __construct($data) {
$this->data = $data;
}
}
然后构造二叉树:
function CreateBTNode(&$root,string $str)
{
$strArr = str_split($str);
$stack = [];
$p = NULL; // 指针
$top = -1;
$k = $j = 0;
$root = NULL;
foreach ($strArr as $ch) {
switch ($ch) {
case '(':
$top++;
array_push($stack, $p);
$k = 1;
break;
case ')':
array_pop($stack);
break;
case ',':
$k = 2;
break;
default:
$p = new BTNode($ch);
if($root == NULL) {
$root = $p;
} else {
switch ($k) {
case 1:
end($stack)->lchild = $p;
break;
case 2:
end($stack)->rchild = $p;
break;
}
}
break;
}
}
}
这里写上一个打印二叉树的函数(中序遍历):
function PrintBTNode($node)
{
if($node != NULL) {
PrintBTNode($node->lchild);
echo $node->data;
PrintBTNode($node->rchild);
}
}
运行结果:
输入一个字符串
"A(B(C,D),G(F))"
看完上述内容,你们掌握如何在PHP中构造一个二叉树算法的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。