剑指offer-按之字形顺序打印二叉树
题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
解题思路:
定义两个栈,奇数层的数保存在stackL中,偶数层的栈保存在stackR中,tmp用来每次保存每一层的节点序列,每次访问完一层都使用tmp.clear()函数清空,再用来保存下一层,首先将根节点入奇数栈,访问保存,当奇数栈和偶数栈都不为空的时候,表明没有访问完所有节点,首先当奇数栈不空的时候,依次将奇数栈栈顶出栈,分别访问并入偶数栈该栈顶节点的左节点和右节点,当奇数栈空之后,将该层节点序列放入到res中; 接下来再操作偶数栈,当偶数栈不空的时候,栈顶元素出栈,分别访问并入奇数栈该栈顶结点的右节点和左节点,当偶数栈空之后,将该层节点序列放入到res中。重复以上过程,直到两个栈都为空结束。
代码实现: