【树】层序遍历

本文介绍了层序遍历树的非递归方法,通过使用队列来遍历树的各个层级,确保了兄弟节点的顺序访问。详细解释了算法流程,并提供了代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

层序遍历不是按照父子关系方式遍历,而是采用兄弟关系遍历,因此 不能采用递归的方式来做。

树的定义里只能从父亲找孩子,因此需要把父亲存起来,这样才能把一堆互为兄弟的孩子遍历到,所以要使用队列,FIFO的那种。


点击(此处)折叠或打开

  1. vector<vector<int> > levelOrder(TreeNode *root) {
  2.         vector<vector<int> > result;
  3.         if(root!=NULL){
  4.             deque<TreeNode *> queue;
  5.             queue.push_back(root);
  6.             vector<int> vec;
  7.             int size=1;
  8.             while(!queue.empty()){
  9.                 if(queue.front()!=NULL){
  10.                     vec.push_back(queue.front()->val);
  11.                     if(queue.front()->left!=NULL)
  12.                         queue.push_back(queue.front()->left);
  13.                     if(queue.front()->right!=NULL)
  14.                         queue.push_back(queue.front()->right);
  15.                     queue.pop_front();
  16.                     size--;
  17.                 }
  18.                 if(size==0){
  19.                     size=queue.size();
  20.                     result.push_back(vec);
  21.                     vec.clear();
  22.                 }
  23.             }
  24.         }
  25.         return result;
  26.     }

<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>
阅读(4) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值