【数据结构】树的相关算法2

3 - 二叉树的最大深度

104. 二叉树的最大深度

算法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;
        int left = maxDepth(root->left);
        int right = maxDepth(root->right);
        return max(left,right) + 1;
    }
};

算法2:非递归算法

/**
 * 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;
        q.push(root);
        int level = 0;
        while(q.size())
        {
    
    
            int n = q.size();
            while(n--)
            {
    
    
                auto t = q.front();
                q.pop();
                if(t->left) q.push(t->left);
                if(t->right) q.push(t->right);
            }
            level ++;
        }
        return level;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_43154149/article/details/108735488