重点:
(1)深搜:
(2)广搜:层次遍历,利用flag将每层节点区分开,然后看一共访问了几层;
难度简单1312
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
返回它的最大深度 3 。
解析:
最大深度,深搜可以解决。同时广搜也可以,上题的层序遍历,加个num即可递增。
代码:
//广搜
class Solution {
public:
int maxDepth(TreeNode* root) {
if(root==nullptr)
return 0;
queue<TreeNode*> que;
int num=0;
que.push(root);
while(!que.empty()){
int len=que.size();
num++;
while(len){
TreeNode *node=que.front();
que.pop();
if(node->left)
que.push(node->left);
if(node->right)
que.push(node->right);
len--;
}
}
return num;
}
};
//深搜
class Solution {
public:
int maxDepth(TreeNode* root) {
if (root == nullptr) return 0;
return max(maxDepth(root->left), maxDepth(root->right)) + 1;
}
};