Little-Prince

导航

104. 二叉树的最大深度

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

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

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

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

返回它的最大深度 3 。

 

思路一:深度优先。深度为左右子树的最大值 + 1。

代码:

/**
 * 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)
            return 0;
         return dfs(root);
    }
    int dfs(TreeNode *current)
    {
        if(!current)
            return 0;
        return max(dfs(current->left),dfs(current->right))+1;
    }

};

思路二:

广度优先。用队列实现二叉树的层序遍历。深度为二叉树的层次。

代码:

/**
 * 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)
            return 0;
       queue<TreeNode*> Q;
       TreeNode *current = root;
       int count = 0;
       Q.push(current);
        int len, i;
       while(!Q.empty())
        {
            len = Q.size();
            if(len)
                count++;
            for(i = 0; i < len; i++)
            {
                current = Q.front();
                Q.pop();
                if(current->left)
                Q.push(current->left);
                if(current->right)
                Q.push(current->right);
            }
        }
        return count;
    }
   

};

 

posted on 2020-10-10 11:15  Little-Prince  阅读(86)  评论(0编辑  收藏  举报