最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP構(gòu)造二叉樹算法示例

 更新時(shí)間:2017年06月21日 10:58:31   作者:火蜥蜴  
本篇文章主要介紹了PHP構(gòu)造二叉樹算法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

樹(Tree)在數(shù)據(jù)結(jié)構(gòu)還是很重要的,這里表示二叉樹用括號(hào)表示法表示。先寫一個(gè)二叉樹節(jié)點(diǎn)類:

// 二叉樹節(jié)點(diǎn)
class BTNode {
  public $data;

  public $lchild = NULL;

  public $rchild = NULL;

  public function __construct($data) {
    $this->data = $data;
  }
}

然后構(gòu)造二叉樹:

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;
    }
  }
}

這里寫上一個(gè)打印二叉樹的函數(shù)(中序遍歷):

function PrintBTNode($node)
{
  if($node != NULL) {
    PrintBTNode($node->lchild);
    echo $node->data;
    PrintBTNode($node->rchild);
  }
}

運(yùn)行結(jié)果:

輸入一個(gè)字符串
"A(B(C,D),G(F))"

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

密山市| 无为县| 康马县| 万宁市| 社旗县| 澜沧| 新密市| 桓仁| 广东省| 杭锦旗| 茌平县| 涡阳县| 怀宁县| 兴和县| 碌曲县| 延吉市| 罗甸县| 五指山市| 罗田县| 长白| 奉节县| 乳山市| 依安县| 汶川县| 扬中市| 吉木乃县| 湖南省| 昭觉县| 海盐县| 临洮县| 永川市| 高阳县| 德庆县| 馆陶县| 广宁县| 泰兴市| 西乌珠穆沁旗| 刚察县| 敦煌市| 普陀区| 武鸣县|