Leetcode111
1.问题描述
2.解决方案
解法一:递归
这个要好好分析出来,不是一下子就能出来的,和求二叉树最大深度的题还是有很大区别的!
class Solution {
public:
int minDepth(TreeNode* root) {
if(root== nullptr) return 0;
if(root->left!= nullptr&&root->right== nullptr) return 1+minDepth(root->left);
if(root->left== nullptr&&root->right!= nullptr) return 1+minDepth(root->right);
if(root->left== nullptr&&root->right== nullptr) return 1;
//if(root->left!= nullptr&&root->right!= nullptr) return 1+min(minDepth(root->right), minDepth(root->left));
return 1+min(minDepth(root->right), minDepth(root->left));
}
};
解法二:迭代
依然是层序遍历中如果遇到左右孩子都为空的情况,说明是最低点一层了,直接return depth即可
if(node->left==nullptr&&node->right==nullptr) return depth;