minimum-depth-of-binary-tree
question
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.
给定二叉树,求其最小深度。最小深度是从根节点到最近的叶节点沿最短路径的节点数。
解题思路
本题目主要考察对于queue队列的使用,如何搜索最小深度,其实就是通过广度搜索来遍历整个二叉树中的所有节点,找到第一个没有子节点的节点。
那么这种题目有两种解题方法,一种是递归式的,递归式的不需要使用到队列,直接递归方法调用就好了;
第二种,则是非递归式的,这里就需要用到queue,使用它来保存我们读取到的节点信息,然后再去通过FIFO的原则,去不断的遍历对应的子节点。
C++代码实现
class Solution {
public:
typedef TreeNode* tree;
int run(TreeNode *root) {
if(root ==nullptr)return 0;
if(root->left ==nullptr && root->right == nullptr)return 1;
queue<tree> que;
tree last,now;
int level,size;
last = now = root;
level=1;que.push(root);
while(que.size() !=0){
now = que.front();
que.pop();
size = que.size();
if(now->left != nullptr)que.push(now->left);
if(now->right != nullptr)que.push(now->right);
if(que.size() == size){
break;
}
if(last == now){
level++;
if(que.size())last = que.back(); //每个last都是这一行的最后一个元素
}
}
return level;
}
};