二叉树深度

TreeNode.php

<?php
namespace Tree;

Class TreeNode {
    public int $val;

    public ?TreeNode $left = null;
    public ?TreeNode $right = null;

    public function __construct(int $x)
    {
        $this->val = $x;
    }
}

$first  = new TreeNode(1);
$second = new TreeNode(2);
$third  = new TreeNode(3);

$first->right = $second;
$second->left = $third;

   //     1
   //      \
   //       2
   //      /
   //     3
<?php
require 'TreeNode.php';

use Tree\TreeNode;

Class Depth{
    public function Recursive(?TreeNode $root) : int
    {
        if (empty($root)) return 0;

        $left_height = $this->Recursive($root->left);
        $right_height = $this->Recursive($root->right);

        return max($left_height, $right_height) + 1;
    }

    public function Interation(TreeNode $root) : int
    {
        $stack = [];
        if ( boolval($root) ) {
            array_push($stack, [1, $root]);
        }

        $depth = 0;

        while (boolval($stack)) {
            list($cur_dep, $root) = array_pop($stack);
            if (boolval($root)) {
                $depth = max($depth, $cur_dep);
                array_push($stack, [$cur_dep + 1, $root->left]);
                array_push($stack, [$cur_dep + 1, $root->right]);
            }
        }

        return $depth;
    }
}

$test = new Depth();


print_r($test->Recursive($first));
echo PHP_EOL;
print_r($test->Interation($first));
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!