二叉树的最大深度

 1 class Solution {
 2 public:
 3     int maxDepth(TreeNode* root){
 4         if(!root)
 5             return 0;
 6         queue<TreeNode*> q;
 7         q.push(root);
 8         int deep = 0;
 9         
10         while(!q.empty())
11         {
12             deep++;
13             int q_len = q.size();
14             for(int i =0;i<q_len;i++)
15             {
16                 TreeNode* temp = q.front();
17                 q.pop();
18                 //if(temp->left==NULL && temp->right==NULL)
19                 //    return deep;
20                 if(temp->left!=NULL)
21                     q.push(temp->left);
22                 if(temp->right!=NULL)
23                     q.push(temp->right);
24             }
25             
26         }
27         return deep;
28         
29     }
30 };

 

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

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

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

解法一:递归

/**
 * 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 maxDepth(TreeNode* root) {
        if(root == NULL)
            return 0;
        int L = maxDepth(root->left);
        int R = maxDepth(root->right);
        int deep = 1;
        if(L==0)
            return R+1;
        if(R==0)
            return L+1;
        return max(L,R) + 1;
        
    }
};  

posted on 2019-04-22 12:58  腻烦s  阅读(96)  评论(0)    收藏  举报

导航