PHP实现构造二叉树算法的方法

墨辰丷
墨辰丷 原创
2023-03-27 08:24:01 1138浏览

本篇文章主要介绍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 构造二叉树算法示例代码

python实现的二叉树算法和kmp算法实例

PHP实现KMP算法

以上就是PHP实现构造二叉树算法的方法的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。