题目:
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;
int curM = INT_MAX;
depth(root, 1, curM);
return curM;
}
void depth(TreeNode* root, int h, int &curM) {
if(root->left == NULL && root->right == NULL) {
if(h < curM)
curM = h;
return;
}
if(root->left != NULL)
depth(root->left, h + 1, curM);
if(root->right != NULL)
depth(root->right, h + 1, curM);
}
};
Java版:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
private int curM = Integer.MAX_VALUE;
public int minDepth(TreeNode root) {
if(root == null)
return 0;
depth(root, 1);
return curM;
}
public void depth(TreeNode root, int h) {
if(root.left == null && root.right == null) {
if(h < curM)
curM = h;
return;
}
if(root.left != null)
depth(root.left, h + 1);
if(root.right != null)
depth(root.right, h + 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 __init__(self):
self.curM = sys.maxint
def minDepth(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if root == None:
return 0
h = 1
self.depth(root, h)
return self.curM
def depth(self, root, h):
if root.left == None and root.right == None:
if h < self.curM:
self.curM = h
return
if root.left != None:
self.depth(root.left, h + 1)
if root.right != None:
self.depth(root.right, h + 1)