111. Minimum Depth of Binary Tree

来源:互联网 发布:js router 编辑:程序博客网 时间:2024/06/06 13:02
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.

解法一:BFS

class Solution {public:    int minDepth(TreeNode* root) {        int count = 0;        if(root == NULL)            return count;        queue<TreeNode*> que;        que.push(root);        while(!que.empty()){            ++count;            const int size = que.size();            for(int i=0; i<size; ++i){                TreeNode* tmp = que.front();                que.pop();                if(tmp->left == NULL && tmp->right == NULL)                    goto final;                if(tmp->left != NULL)                    que.push(tmp->left);                if(tmp->right != NULL)                    que.push(tmp->right);            }        }final:        return count;    }};

注意双层循环,仅仅使用break是无法跳出来的,使用goto,或者直接return。

解法二:DFS

  if(root == NULL)            return 0;        int l = minDepth(root->left);        int r = minDepth(root->right);        return 1 + ((l != 0 && r != 0) ? std::min(l, r) : std::max(l, r));

注意当递归回去的时候,某个节点当前深度为0,我们要return较大的哪一个,否则此处节点的深度就成了“假0”!

0 0
原创粉丝点击