题目大意:
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.
意思就是:
给定一棵二叉树, 球它的最小高度
解体思路:
DFS. 同时定义一个变量作为当前最小值, 每次求的一条路径, 就和改变量做比较, 最后所有的路径都遍历完之后,就可求得最小值.
代码如下:
/**
* Definition for binary tree
* 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 depth = 0, min = -1;
return binTreePreTravel(root, depth, min);
}
int binTreePreTravel(TreeNode* root, int depth, int& min){
depth++;
if(root->left){
binTreePreTravel(root->left, depth, min);
}
if(root->right){
binTreePreTravel(root->right, depth, min);
}
if(!root->left && !root->right){
if(min != -1){
min = (min < depth? min: depth);
}
else if(min == -1){
min = depth;
}
}
return min;
}
};