题目:
求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。
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.
解题思路:考虑递归,1.当树为空的时候,树的最小深度为0;
2.当树的左子树为空时,右子树的深度加1即为树的深度,同理,当右子树为空时,左子树的深度加1即为树的最小深度;
3.当树的左右子树皆非空时,递归求得左右子树的深度后取两者较小值加1即为树的最小深度。
解答:
class Solution {
public:
int run(TreeNode *root) {
if(!root) return 0;
if(!root->left)return run(root->right)+1;
if(!root->right) return run(root->left)+1;
return min(run(root->left),run(root->right))+1;
}
};