재귀를 사용하여 PHP에서 이진 트리를 만드는 방법

不言
풀어 주다: 2023-04-04 08:40:01
앞으로
2397명이 탐색했습니다.

이 기사의 내용은 PHP가 재귀를 사용하여 이진 트리를 만드는 방법에 대한 것입니다. 이는 특정 참조 값을 가지고 있으므로 도움이 될 수 있습니다.

1. 노드가 원래 인쇄된 곳을 제외하고는 노드를 생성하고 노드에 값을 할당하는 작업으로 변경된다는 점을 제외하고는 재귀의 원리를 사용합니다

if(ch=='#'){*T=NULL;}else{malloc();(*T)->data=ch;createFunc((*T)->lchild);createFunc((*T)->rchild);}
로그인 후 복사

2. 사전 주문 순회: 루트 노드를 먼저 방문합니다. , preorder 왼쪽 하위 트리를 탐색하고 오른쪽 하위 트리를 preorder로 탐색합니다. 중간 및 왼쪽

3. 이진 트리의 각 노드의 널 포인터를 값이 특정 값인 가상 노드로 유도하고 처리된 이진을 처리합니다. tree는 순회 시퀀스를 통해 이진 트리를 결정하기 위해 이진 트리를 확장한 것입니다

<?php
class BinTree{
        public $data;
        public $left;
        public $right;
}
//前序遍历生成二叉树
function createBinTree(){
        $handle=fopen("php://stdin","r");
        $e=trim(fgets($handle));
        if($e=="#"){
                $binTree=null;
        }else{
                $binTree=new BinTree();
                $binTree->data=$e;
                $binTree->left=createBinTree();
                $binTree->right=createBinTree();
        }  
        return $binTree;
}   
$tree=createBinTree();
var_dump($tree);
A
B
#
D
#
#
C
#
#
object(BinTree)#1 (3) {
  ["data"]=>
  string(1) "A"
  ["left"]=>
  object(BinTree)#2 (3) {
    ["data"]=>
    string(1) "B"
    ["left"]=>
    NULL
    ["right"]=>
    object(BinTree)#3 (3) {
      ["data"]=>
      string(1) "D"
      ["left"]=>
      NULL
      ["right"]=>
      NULL
    }
  }
  ["right"]=>
  object(BinTree)#4 (3) {
    ["data"]=>
    string(1) "C"
    ["left"]=>
    NULL
    ["right"]=>
    NULL
  }
}
로그인 후 복사

위 내용은 재귀를 사용하여 PHP에서 이진 트리를 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:cnblogs.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿