按之字形顺序打印二叉树

思路1:

最容易想到的思路是将二叉树的节点按行存入单向队列中去,根据行数的奇偶性来决定这一行答案数字的存入顺序。如果是偶数行就用reverse()函数进行逆序输出。但是用了reverse()函数的话,会大大增加程序的开销,一旦面临海量数据的话,不可行。

思路2:

  利用两个栈实现,如果当前行是奇数行,则添加节点按照从左节点到右节点的顺序push进栈A,然后更具据栈A中的节点按照从栈顶到栈低的顺序,对A内每个节点按照其子树先右后左(偶数行)的顺序push进栈B中,此时将A中的节点数字放入答案容器中去,再POP掉。然后循环下去.......

你可能感兴趣的:(按之字形顺序打印二叉树)