>백엔드 개발 >PHP 튜토리얼 >PHP에서 이진 트리 알고리즘을 구현하는 방법

PHP에서 이진 트리 알고리즘을 구현하는 방법

墨辰丷
墨辰丷원래의
2018-05-21 11:36:131567검색

이 글은 주로 PHP에서 이진 트리 알고리즘을 구성하는 방법을 소개합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.

트리는 데이터 구조에서 여전히 매우 중요합니다. 여기서 이진 트리는 대괄호 표기법으로 표현됩니다. 먼저 이진 트리 노드 클래스를 작성합니다:

// 二叉树节点
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으로 문의하세요.