leetcode 104、Maximum Depth of Binary Tree、难度easy
0. 题干
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
返回它的最大深度 3 。
1. 代码
// 广度优先:使用队列
class Solution {
public:
int maxDepth(TreeNode* root) {
if(root==NULL) return 0;
queue<TreeNode*> q;
if (root)
q.push(root);
int level=0;
while(q.size())
{
level++;
int num=q.size();
for(int i=0;i<num;i++)
{
TreeNode* cur=q.front();
q.pop();
if(cur->left)
q.push(cur->left);
if(cur->right)
q.push(cur->right);
}
}
return level;
}
};
2. 简述代码流程
先存根节点root到队列里面去,然后level值为1;
找根节点的左右结点存到队列里面,level值为2,
此时发现值为9的结点的左右孩子不存在,那就别管,再此进入for(int i=0;i<num;i++)
循环,把结点值为20的左右孩子存到队列里面,当然之前要pop掉值为20的结点,
此时level的值为3,发现值为15、以及值为7的结点都没有左右孩子,依次pop掉,
队列为空,跳出while(q.size()),代码运行结束,返回 level值为3。