python 之字形打印二叉树

题目
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行在按照从左到右的顺序打印,其他行以此类推。例如,按之字形顺序打印下图中的二叉树。
在这里插入图片描述
打印结果为:
1
3 2
4 5 6 7
15 14 13 12 11 10 9 8

2. 解题思路
思路一:
使用的容器不变,仍然使用队列来实现。根据节点所处层数的不同而修改元素添加的顺序,打印的时候仍然顺序打印出来。
我们需要三个变量:
一个变量表示在当前层中还没有打印的节点数;
一个变量表示下一层节点的数目。
一个变量来记录这是第几行,奇数行如何如何,偶数行如何如何。
代码:
在这里插入图片描述
**思路二:**书中思路
在这里插入图片描述
3. 总结
队列和栈都可以实现这个题,但是选择不同的容器来实现,最后的时间复杂度和空间复杂是不一样的,就这道题而言,明显使用栈来实现的,时间复杂度更低(主要是低在弹出需要打印的元素这一步,队列这一步时间复杂度为O(n), 而栈这一步的时间复杂度为O(1))。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值