《算法通关村-二叉树的遍历原来如此简单》

        这两天终于到了树结构的算法了,树结构一直是工作中的重点,也是难点,有点小爬坡的意思,难度自然会有但是掌握了相应的模板也不会变得很难。

        一般二叉树的遍历有两种,深度优先、广度优先,广度优先也叫层序遍历,层序遍历有两种:自顶向下遍历和自底向上遍历。

        那么下面将介绍我觉得比较不好理解的自顶向下的锯齿形的层序遍历,也就是leetcode的13题,题目如下: 

        

二叉树的层序遍历基本就是建立一个List<List<Integer>> 存储每层的数据,队列Queue<TreeNode> que = new LinkedList<>();来存储每层的节点。那这里的要求是偶数列的要从后往前遍历,那就可以建立一个双端队列奇数列往后插入,偶数列往头插入,再把这个双端队列初始化给新建的list去存储,注意的是这里可以通过一个变量去判断奇数列还是偶数列,这里用布尔型的flag每层遍历完取反就比较巧妙,也可以建立一个count = 1,判断%2是否有余数来判断奇偶,但是后面这个如果这个数是层次是无限大的话,这个count就有可能越界。代码如下:

        

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值