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