Thursday, December 13, 2012

[leetcode] maximum depth of binary tree


Maximum Depth of Binary Tree
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 binary tree
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    int maxDepth(TreeNode *root) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
       
        if (!root)
            return 0;
       
        // level traversal
       
        queue my_queue;
       
        my_queue.push(root);
        my_queue.push(NULL); // a dummy node
       
        int depth = 0;
       
        while (!my_queue.empty())
        {
            TreeNode *front = my_queue.front();
            my_queue.pop();
            if (!front)
            {
                depth++;
            }
            else
            {
                if (front->left) my_queue.push(front->left);
                if (front->right) my_queue.push(front->right);
                front = my_queue.front();
                if (!front) my_queue.push(NULL);
            }
        }
       
        // reduce by 1 because of the last dummy node
        depth--;
       
        return depth;
    }
};

No comments: