Minimum Depth of Binary Tree
问题描述:给定一个二叉树,找出其最小深度。其中最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
问题解决:起初我想的是将求树的深度的max改成min就可以解决了,结果不是,因为如果存在一个节点只有一个子节点的话,返回结果就错误了,因为此时的“最小值”不是从根节点到叶子节点的深度。所以后来我想的是找出从根节点到每个叶子节点的路径长度,然后比较得出最小路径。
class Solution {
public:
int minDepth(TreeNode* root) {
if(!root) return 0;
//找出根节点到叶子节点的最短深度
height(root,1);
return depth;
}
void height(TreeNode* root,int d)
{
if(!root)
return;
//找到叶子节点
if(!root->left&&!root->right)
{
//储存比较小的那个
depth=min(d,depth);
}
height(root->left,d+1);
height(root->right,d+1);
}
private:
//储存最小深度
int depth=INT_MAX;
};