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.
题意:求树的最短高度(由树根到叶子的最短的距离)。
思路:层序遍历,当遍历到某叶结点时,程序返回该叶结点所在的层数。层序遍历是借鉴102. Binary Tree Level Order Traversal题采用的两个数组交替的方法。
/**
* 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;
vector<TreeNode*> levelTree1;
vector<TreeNode*> levelTree2;
levelTree1.push_back(root);
int height = 1;
while (!(levelTree1.empty() && levelTree2.empty())){
vector<int> p;
if (!levelTree1.empty()){
for (int i = 0; i < levelTree1.size(); i++){
TreeNode* t = levelTree1[i];
if (t->left == NULL && t->right == NULL)
return height;
if (t->left)
levelTree2.push_back(t->left);
if (t->right)
levelTree2.push_back(t->right);
}
levelTree1.clear();
}
else{
for (int i = 0; i < levelTree2.size(); i++){
TreeNode* t = levelTree2[i];
if (t->left == NULL && t->right == NULL)
return height;
if (t->left)
levelTree1.push_back(t->left);
if (t->right)
levelTree1.push_back(t->right);
}
levelTree2.clear();
}
height++;
}
return height;
}
};