层序遍历不是按照父子关系方式遍历,而是采用兄弟关系遍历,因此
不能采用递归的方式来做。
树的定义里只能从父亲找孩子,因此需要把父亲存起来,这样才能把一堆互为兄弟的孩子遍历到,所以要使用队列,FIFO的那种。
阅读(4) | 评论(0) | 转发(0) |
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
树的定义里只能从父亲找孩子,因此需要把父亲存起来,这样才能把一堆互为兄弟的孩子遍历到,所以要使用队列,FIFO的那种。
点击(此处)折叠或打开
- vector<vector<int> > levelOrder(TreeNode *root) {
- vector<vector<int> > result;
- if(root!=NULL){
- deque<TreeNode *> queue;
- queue.push_back(root);
- vector<int> vec;
- int size=1;
- while(!queue.empty()){
- if(queue.front()!=NULL){
- vec.push_back(queue.front()->val);
- if(queue.front()->left!=NULL)
- queue.push_back(queue.front()->left);
- if(queue.front()->right!=NULL)
- queue.push_back(queue.front()->right);
- queue.pop_front();
- size--;
- }
- if(size==0){
- size=queue.size();
- result.push_back(vec);
- vec.clear();
- }
- }
- }
- return result;
- }
相关热门文章
给主人留下些什么吧!~~
评论热议