>  기사  >  백엔드 개발  >  PHP의 완전 이진 트리 정의 방법에 대한 자세한 설명

PHP의 완전 이진 트리 정의 방법에 대한 자세한 설명

黄舟
黄舟원래의
2017-10-10 09:26:481730검색

이 글은 주로 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으로 문의하세요.