二叉树的最小深度
#include<queue>
#include<vector>
using namespace std;
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
class Solution {
public:
int run(TreeNode* root) {
if (root == nullptr)
return 0;
vector<int> numLevel(65535);
int level = 1;
int nextLevel = level + 1;
queue<TreeNode*> nodeQueue;
nodeQueue.push(root);
numLevel[level] = 1;
while (!nodeQueue.empty())
{
if ((nodeQueue.front()->left == nullptr) &&
(nodeQueue.front()->right == nullptr))
{
return level;
}
if (nodeQueue.front()->left != nullptr)
{
nodeQueue.push(nodeQueue.front()->left);
numLevel[nextLevel]++;
}
if (nodeQueue.front()->right != nullptr)
{
nodeQueue.push(nodeQueue.front()->right);
numLevel[nextLevel]++;
}
nodeQueue.pop();
numLevel[level]--;
if (numLevel[level] == 0)
{
level++;
nextLevel++;
}
}
}
};