首頁  >  文章  >  後端開發  >  php中關於完全二元樹的定義方法詳解

php中關於完全二元樹的定義方法詳解

黄舟
黄舟原創
2017-10-10 09:26:481721瀏覽

這篇文章主要介紹了PHP完全二叉樹定義與實現方法,簡單描述了完全二叉樹的概念並結合實例形式給出了完全二叉樹的定義、節點查找、添加、設置、打印等相關操作技巧,需要的朋友可以參考下

本文實例講述了PHP完全二元樹定義與實作方法。分享給大家供大家參考,具體如下:

若設二元樹的深度為h,除第h 層外,其它各層(1~h-1) 的結點數都達到最大個數,第h 層所有的結點都連續集中在最左邊,這就是完全二元樹。

PHP程式碼實作(暫時實作新增節點、層次遍歷節點,刪除節點後續更新)


<?php
class Node{
  public $value;
  public $leftNode;
  public $rightNode;
}
/* 找到空节点 */
function findEmpytNode($node, $parent = null){
  if(empty($node->value)){
    return $node;
  }else{
    if(empty($node->leftNode->value)){
      return $node->leftNode;
    }else if(empty($node->rightNode->value)){
      return $node->rightNode;
    }else{
      if(empty($parent) || $node->value == $parent->rightNode->value){
        return findEmpytNode($node->leftNode, $node);
      }else{
        return findEmpytNode($parent->rightNode, $node);
      }
    }
  }
}
/* 添加节点 */
function addNode($node, $value){
  $emptyNode = findEmpytNode($node);
  setNode($emptyNode, $value);
}
/* 设置节点 */
function setNode($node, $value){
  $node->value = $value;
  $node->leftNode = new Node();
  $node->rightNode = new Node();
}
/* 打印 */
function printTree($node, $parent = null){
  if(empty($node->value)) return ;
  echo $node->leftNode->value;
  echo $node->rightNode->value;
  if(empty($parent) || $node->value == $parent->rightNode->value){
    printTree($node->leftNode, $node);
  }else{
    printTree($parent->rightNode, $node);
  }
}
$head = new Node();
setNode($head, 1);
addNode($head, 2);
addNode($head, 3);
addNode($head, 4);
addNode($head, 5);
addNode($head, 6);
printTree($head);

以上是php中關於完全二元樹的定義方法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn