111. Minimum Depth of Binary Tree(python+cpp)
阿新 • • 發佈:2018-12-19
題目:
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. Note: A leaf is a node with no children.
Example: Given binary tree [3,9,20,null,null,15,7],
3 / \ 9 20 / \ 15 7
return its minimum depth = 2.
解釋:
返回二叉樹的最小的深度。應該用dfs做,先求出左右兩個子樹的最小深度,如果左右子樹的深度中有一個是0
或者兩個都是0
,返回1+left+right
(也就是1+深度不為0的子樹的深度),注意,一個葉子節點的深度是1。
python程式碼:
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def minDepth(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if not root:
return 0
left=self.minDepth(root.left)
right=self.minDepth(root.right)
if left==0 or right==0:
return left+ right+1
return 1+min(left,right)
c++程式碼:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int minDepth(TreeNode* root) {
if (! root)
return 0;
int left=minDepth(root->left);
int right =minDepth(root->right);
if(!left ||!right)
return 1+left+right;
return 1+min(left,right);
}
};
總結: 注意這裡和一般的dfs的解法不一樣,需要先進dfs,再對dfs之後的結果做判斷。