剑指Offer-61

来源:互联网 发布:原味内衣淘宝怎么搜 编辑:程序博客网 时间:2024/05/16 09:23

题目

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

实现

public class Solution61 {    public static void printtree(BinaryTreeNode root) {        if (root == null) {            return;        }        Stack<BinaryTreeNode> current = new Stack<BinaryTreeNode>();        Stack<BinaryTreeNode> reverse = new Stack<BinaryTreeNode>();        int flag = 0;        BinaryTreeNode node;        current.add(root);        while (!current.isEmpty()) {            // 从最后一个开始取            node = current.pop();            System.out.printf("%-3d", node.value);            // 当前是从左往右打印的,那就按从左往右入栈            if (flag == 0) {                if (node.left != null) {                    reverse.push(node.left);                }                if (node.right != null) {                    reverse.push(node.right);                }            }            // 当前是从右往左打印的,那就按从右往左入栈            else {                if (node.right != null) {                    reverse.push(node.right);                }                if (node.left != null) {                    reverse.push(node.left);                }            }            if (current.isEmpty()) {                flag = 1 - flag;                Stack<BinaryTreeNode> tmp = current;                current = reverse;                reverse = tmp;                System.out.println();            }        }    }}
原创粉丝点击