ホームページ >バックエンド開発 >PHPチュートリアル >PHPにおける完全バイナリツリーの定義方法を詳しく解説

PHPにおける完全バイナリツリーの定義方法を詳しく解説

黄舟
黄舟オリジナル
2017-10-10 09:26:481737ブラウズ

この記事では主に、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。