Thursday, December 13, 2012

[leetcode] mimimum depth of binary tree

Minimum Depth of Binary Tree
Given a binary tree, find its minimum depth.
The minimum depth is the number of nodes along the shortest path from the root node down to the nearest 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 minDepth(TreeNode *root) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
       
        if (!root)
            return 0;
       
        queue my_queue;
        my_queue.push(root);
        my_queue.push(NULL);
        int depth = 0, min_depth = 9999;
       
        while (!my_queue.empty())
        {
            TreeNode *front = my_queue.front();
           
            my_queue.pop();
           
            if (!front)
                depth++;
            else
            {
                if (!front->left && !front->right)
                {
                    if (min_depth > depth)
                        min_depth = depth;
                }
                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);
            }
        }
       
        min_depth++;
       
        return min_depth;
    }
};

No comments: