>  기사  >  백엔드 개발  >  재귀를 사용하여 PHP에서 이진 트리를 만드는 방법

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

不言
不言앞으로
2018-09-30 14:24:422385검색

이 기사의 내용은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제