《leetCode-php》 求二叉树的最小深度和最大深度

有感而发,需要活到老学到老,不学就可能被淘汰。自己不是科班出身,就要好好学习。毕业之后大半年的下班时间都没有把握好呀。现在开始把握一下吧

Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.

求二叉树的最小深度。

注意!这个求得是给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。

一定要到叶子节点!!!所以当某一边没有节点的时候,需要舍弃

<?php
class TreeNode {
    public $left;
    public $right;
    public $val;
    public function __construct($val) {
        $this->val = $val;
    }
}
function TreeMinDepth($pRoot) {
    if (null === $pRoot) {
        return 0;
    }
    $leftMinDepth  = TreeMinDepth($pRoot->left) + 1;
    $rightMinDepth = TreeMinDepth($pRoot->right) + 1;
    if (null !== $pRoot->left && null !== $pRoot->right) {
        //左右都不为空取最小
        return ($leftMinDepth < $rightMinDepth) ? $leftMinDepth : $rightMinDepth;
    } else {
        //左右存在空,则舍弃空那一边
        return ($leftMinDepth < $rightMinDepth) ? $rightMinDepth : $leftMinDepth;
    }
}

根据这道题,考虑到求二叉树的深度(最大深度)

<?php
function TreeDepth($pRoot) {
    if (null === $pRoot) {
        return 0;
    }
    $depth = 1;
    if (null === $pRoot->left && null === $pRoot->right) {
        return $depth;
    }
    $leftDepth  = TreeDepth($pRoot->left);
    $rightDepth = TreeDepth($pRoot->right);
    $depth      = ($leftDepth > $rightDepth) ? ($depth + $leftDepth) : ($depth + $rightDepth);
    return $depth;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值