题目描述:   请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推.   解题思路:   这道题仍然是二叉树的遍历,相当于层次遍历,可以和第22题:从上往下打印二叉树 和第60题:把二叉树打印成多行 这几个题对比起来进行分析.   相对而言,本题按之字形顺序打印二叉树是比较复杂的,短时间内不太好分析得到结论,可以通过具体的实例来进行分析,从具体的例子得出普遍的结论.   实际上,层次遍历我们都是借助一…
剑指offer---3.按之字形顺序打印二叉树 一.总结 一句话总结: |||-begin 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. |||-end 可以先快速把所有题目过一遍,先主干,后枝叶 考点就是树的层次遍历 1.如何解决效率低的问题(将每层的数据存进ArrayList中,偶数层时进行reverse操作,在海量数据时,这样效率太低了)? 思路:利用Java中的LinkedList的底层实…
按之字形顺序打印二叉树 牛客网 剑指Offer 题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def Print(self,root): if not root:…
[剑指Offer]按之字形顺序打印二叉树 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描述: 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 解题方法 层次遍历的做法我们都会了,这个题使用先遍历,然后再把奇数层翻转的方式,虽然有点笨,但是写出来很快. 代码: # -*- cod…
按之字形顺序打印二叉树 题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 题目链接: 按之字形顺序打印二叉树 代码 import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import java.util.Stack; /** * 标题:按之字形顺序打印二叉树 * 题目描述 * 请实现一…
[题目]请实现一个函数按照之字形打印二叉树, * 即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印, * 其他行以此类推. 未优化,不是最优解,博主用的是队列,我用的栈. 方法一:直接打印 package com.exe7.offer; import java.util.Stack; import org.junit.Test; /**方法一:直接打印 * [题目]请实现一个函数按照之字形打印二叉树, * 即第一行按照从左到右的顺序打印,第二层按照从右至…
package Tree; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; /** * 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. * 思路: * 先按层次输出二叉树 * 判断奇数层和偶数层 * 反转arrayList */ public class Solution9 { publ…
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 题目地址 https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0?tpId=13&tqId=11212&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranki…
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; */ class Solution { public: vector<vector<i…
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 题目分析 这道题还是需要画图分析,不然不好找规律. 正常的广度遍历的话,都是同样的顺序,从左到右,而我们要在广度遍历的基础上改造为之字形遍历. 也就是我们需要在奇数行从左至右,在偶数行从右至左,因为是先进后出,分析可得我们需要的数据结构是栈. 为了避免顺序错误,我们需要的不只是一个栈,而是两个栈,这个大家画图研究下就能想到. 两个栈是这么用的…