思路:
按照层遍历,想到用queue
将root和左右子树节点放入queue 中,root 放入第一层容器,左右子树放入第二层容器
继续遍历子树,直到左右子树都未null
代码:
1 /** 2 * Definition for a binary tree node. 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 vector<vector<int>> res; 14 15 if(!root) return res; 16 17 queue<TreeNode*> q; //将节点放入队列中去 18 q.push(root); 19 while(q.size()) 20 { 21 int len=q.size(); 22 vector<int>level; 23 24 for(int i=0;i<len;i++) //遍历队列 25 { 26 auto t=q.front();//取出队列中元素 27 q.pop(); 28 level.push_back(t->val);//将取出的节点放入到vector中 29 if(t->left) q.push(t->left);//扩展一下,如果有左右子树, 30 if(t->right) q.push(t->right); 31 32 } 33 res.push_back(level); 34 } 35 return res; 36 } 37 };
Every step of barefoot running deserves to be recorded