leetcode_104._Maximum Depth of Binary Tree(C++)(easy)

来源:互联网 发布:mac os游戏推荐 编辑:程序博客网 时间:2024/05/29 04:21

Given a binary tree, find its maximum depth.

The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

思路一: 

可以利用递归的方式

/**
 * 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 left = maxDepth(root -> left);
        int right = maxDepth(root -> right);
        return ( left > right )? left+1 : right+1 ;
    }
};

思路二:

利用队列

class Solution {
public:
    int maxDepth(TreeNode* root) {
        if(root == NULL)
            return 0;
        queue<TreeNode*> que;
        que.push(root);
        int count = 1;
        int depth = 0;
        while(!que.empty())
        {
            TreeNode* tmp = que.front();
            que.pop();
            count--;
            
            if(tmp -> left)
            {
                que.push(tmp -> left);
            }
            if(tmp -> right)
            {
                que.push(tmp -> right);
            }
            
            if(count == 0)
            {
                depth++;
                count += que.size();
            }
            
        }
        return depth;    
    }
};


0 0