首頁  >  文章  >  後端開發  >  PHP實作建構二元樹演算法的方法

PHP實作建構二元樹演算法的方法

墨辰丷
墨辰丷原創
2018-05-21 11:36:131539瀏覽

這篇文章主要介紹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