Leetcode-104.二叉树的最大深度

题目描述

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例:
给定二叉树 [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

返回它的最大深度 3 。

解法1:递归

DFS深度扫描

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
private:
int max;
public:
int maxDepth(TreeNode* root) {
if(root==NULL)
return 0;
max=0;
frontfind(root,0);
return max;
}
void frontfind(TreeNode *root,int height)
{
if(max<height)
max=height;
if(root!=NULL)
{
frontfind(root->left,height+1);
frontfind(root->right,height+1);
}
return ;
}
};

解法2:迭代

队列实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
public:
int maxDepth(TreeNode* root) {
if(root==NULL)
return 0;
queue<TreeNode *>que;
que.push(root);
TreeNode *p=new TreeNode(0);
int height=0;
while(!que.empty())
{
int n=que.size();
for(int i=0;i<n;i++)
{
p=que.front();
que.pop();
if(p->left) que.push(p->left);
if(p->right) que.push(p->right);
}
height++;
}
return height;
}
};