ホームページ  >  記事  >  バックエンド開発  >  PHPでバイナリツリーの深さ計算を実装する方法(コード付き)

PHPでバイナリツリーの深さ計算を実装する方法(コード付き)

不言
不言転載
2018-10-09 14:41:073258ブラウズ

この記事の内容は、PHP でバイナリ ツリーの深さ計算を実装する方法 (コード付き) に関するもので、一定の参考値があります。必要な友人は参照してください。お役に立てれば幸いです。

バイナリ ツリーの深さ:
バイナリ ツリーを入力し、ツリーの深さを調べます。根ノードから葉ノードまで順番に通過するノード(根ノード、葉ノードを含む)が木の経路を形成し、最も長い経路の長さが木の深さとなる。

アイデア:

1. 非再帰的なレイヤー順序のトラバーサル
2. 補助キューを使用し、ルート ノードが最初にキューに入ります
3. ループキューが空かどうかを判断するには、空でない場合は、キュー内の各ノードを循環し続けます
4。キューが循環されると、現在のノードがキューから取り出され、ノードの左右の子がキューに入れてください

TreeDepth(tree)
    if !tree return 0
    array_push(queue,tree);
    depth=0
    while(!empty(queue)){
        ++depth
        for i=0;i<queue.size;i++
            node=array_pop(queue)
            array_push(queue,node->left);
            array_push(queue,node->right);
    return depth
<?php
class TreeNode{
    var $val;
    var $left = NULL;
    var $right = NULL;
    function __construct($val){
        $this->val = $val;
    }   
}
function TreeDepth($tree)
{
        if(!$tree) return 0;
        $queue=array();
        array_push($queue,$tree);//在数组最后添加元素
        $depth=0;
        while(!empty($queue)){
                $depth++;
                $size=count($queue);
    
                for($i=0;$i<$size;$i++){
                        $node=array_shift($queue);//非常重要 删除第一个元素
                        if($node->left){
                                array_push($queue,$node->left);
                        }   
                        if($node->right){
                                array_push($queue,$node->right);
                        }   
                }   
        }    
        return $depth;
}
$node1=new TreeNode(1);
$node2=new TreeNode(2);
$node3=new TreeNode(3);
$node4=new TreeNode(4);
$node5=new TreeNode(5);
$node6=new TreeNode(6);
$node7=new TreeNode(7);
$tree=$node1;
$node1->left=$node2;
$node1->right=$node3;
$node2->left=$node4;
$node2->right=$node5;
$node4->right=$node6;
$node3->left=$node7;
var_dump($tree);
$dep=TreeDepth($tree);
var_dump($dep);

以上がPHPでバイナリツリーの深さ計算を実装する方法(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。