[LeetCode 111] - 二叉树的最小深度 (Minimum Depth of Binary Tree)

问题

给出一棵二叉树,找出它的最小深度。

最小深度是指从根节点沿着最短路径下降到最近的叶子节点所经过的节点数。

 

初始思路

不难看出又是一个需要层次遍历二叉树的题目,只要在112基础上作出简单修改即可得出答案。

 1 class Solution
 2     {
 3     public:
 4         int minDepth(TreeNode *root)
 5         {
 6             if(!root)
 7             {
 8                 return 0;
 9             }
10             
11             treeLevel_[0].clear();
12             treeLevel_[1].clear();
13             
14             depth_ = 0;
15             
16             bool flag = false;
17             treeLevel_[0].push_back(root);
18             
19             while(!treeLevel_[flag].empty())
20             {
21                 ++depth_;
22                 for(auto iter = treeLevel_[flag].begin(); iter != treeLevel_[flag].end(); ++iter)
23                 {
24                     if(!(*iter)->left && !(*iter)->right)
25                     {
26                         return depth_;
27                     }
28                     
29                     if((*iter)->left)
30                     {
31                         treeLevel_[!flag].push_back((*iter)->left);
32                     }
33                     
34                     if((*iter)->right)
35                     {
36                         treeLevel_[!flag].push_back((*iter)->right);
37                     }
38                 }
39                 
40                 treeLevel_[flag].clear();
41                 
42                 flag = !flag;
43             }
44             
45             return depth_;
46 
47         }
48         
49     private:
50         std::vector<TreeNode*> treeLevel_[2];
51         int depth_;
52     };
minDepth

 

posted @ 2013-07-25 23:06  Shawnone  阅读(493)  评论(0编辑  收藏  举报