题目
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.
题意
给你一个二叉树,找出他的最小的深度。
最小深度的定义为:从叶子节点到根节点的最短路径。
题解
递归求深度,详解见注释
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==NULL) return 0;
if(root->left==NULL) return minDepth(root->right)+1;//相对子树深度加1方便比较
else if(root->right==NULL) return minDepth(root->left)+1;
else return (min(minDepth(root->left), minDepth(root->right))+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 root == None:
return 0
if root.left == None:
return self.minDepth(root.right) + 1
elif root.right == None:
return self.minDepth(root.left) + 1
else:
return min(self.minDepth(root.right), self.minDepth(root.left)) + 1