1.题目
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7返回它的最小深度 2.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-depth-of-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2.code
/**
* 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) {
int cnt=1;
queue<TreeNode*>q;
int sz;
TreeNode* t;
if(root==NULL)
return 0;
q.push(root);
while(!q.empty())
{
sz=q.size();
while(sz--)
{
t=q.front();
q.pop();
if(t->left==NULL&&t->right==NULL)
return cnt;
if(t->left!=NULL)
q.push(t->left);
if(t->right!=NULL)
q.push(t->right);
}
cnt++;
}
return cnt;
}
};
3.分析
万能的层序遍历,遍历一层,深度加1,返回遇到第一个叶子节点的深度。我之前用传统的办法递归求解,一直死在[1,2]这个用例上。
鸡汤:
假如你只能从自己的角度看世界,就会遇到很多想不通、忍不了的事情。
久而久之,要么变得偏激,要么变得颓废,总归不能好过。
而能够立体认识世界,不但能让我们耳聪目明,能做出正确的选择,更使我们能够与所处的世界和谐共处。
问题是多面的,思维也是多面的啊,朋友,加油!