104 二叉树的最大深度
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
返回它的最大深度 3 。
层次遍历方法
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
#define Maxsize 10000
int maxDepth(struct TreeNode* root){
if(root==NULL)
return 0;
int last=0,level=0;
struct TreeNode* Q[Maxsize];
int front=-1,rear=-1;
Q[++rear]=root;
struct TreeNode* p=root;
while(front<rear){
p = Q[++front];
if(p->left) Q[++rear]=p->left;
if(p->right) Q[++rear]=p->right;
if(front==last){
level++;
last=rear;
}
}
return level;
}
递归方法
int maxDepth(struct TreeNode* root){
if(root == NULL)
return 0;
if(root->left== NULL&&root->right == NULL)
return 1;
int lDepth = maxDepth(root->left) + 1;
int rDepth = maxDepth(root->right) + 1;
if(lDepth > rDepth) return lDepth;
else return rDepth;
}