代码改变世界

leetcode - Binary Tree Level Order Traversal

2013-03-04 09:23  张汉生  阅读(144)  评论(0编辑  收藏  举报

题目描述:点击此处

 1 /**
 2  * Definition for binary tree
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     vector<vector<int> > levelOrder(TreeNode *root) {
13         // Start typing your C/C++ solution below
14         // DO NOT write int main() function
15       vector<vector<int>> rlt;
16       if (root == NULL)
17         return rlt;
18       queue<TreeNode*> vt;
19       vector<int> vi;
20       vt.push(root);
21       vt.push(NULL);
22       TreeNode * node;
23       while(!vt.empty()){
24         node = vt.front();
25         if (node==NULL){
26           if (vi.size()>0){
27             rlt.push_back(vi);
28             vi = vector<int>();
29             vt.push(NULL);
30           }
31         }
32         else{
33           vi.push_back(node->val);
34           if (node->left != NULL)
35             vt.push(node->left);
36           if (node->right != NULL)
37             vt.push(node->right);
38         }
39         vt.pop();
40       }
41       return rlt;
42     }
43 };