剑指offer(59)按之字形顺序打印二叉树

Posted wuguanglin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer(59)按之字形顺序打印二叉树相关的知识,希望对你有一定的参考价值。

题目描述

请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。

 

题目分析

这道题还是需要画图分析,不然不好找规律。

正常的广度遍历的话,都是同样的顺序,从左到右,而我们要在广度遍历的基础上改造为之字形遍历。

也就是我们需要在奇数行从左至右,在偶数行从右至左,因为是先进后出,分析可得我们需要的数据结构是栈。

为了避免顺序错误,我们需要的不只是一个栈,而是两个栈,这个大家画图研究下就能想到。

两个栈是这么用的,这个栈保存这一行的数据,另一个栈保存下一行的数据,然后一行打印完后交替。

当然也有人是在广度遍历的基础上加个临时数组,然后对偶数行的数据reverse也可以做,但是我觉得reverse效率太低,所以就不打算写这种方法了。

 

代码

待更新

 

以上是关于剑指offer(59)按之字形顺序打印二叉树的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer(59)按之字形顺序打印二叉树

59剑指offer--按之字形顺序打印二叉树

《剑指offer》:[61]按之字形顺序打印二叉树

剑指offer系列——59/60.按之字形顺序打印二叉树/把二叉树打印成多行

剑指OFFER 按之字形顺序打印二叉树

剑指offer JZ77 按之字形顺序打印二叉树