算法(3)层次顺序遍历二叉树

2018-09-16  本文已影响0人  来搞事情

问题:
按照层次顺序遍历二叉树,每层换行打印

1、普通的按层打印二叉树只需要使用队列就可以了
2、按层打印二叉树,需要记录每层的最后节点。使用两个值记录,last和nlast,last记录每一层的最后一个节点,nlast记录当前出队列的节点的儿子节点,当出队的值等于last的时候换行

public static int[][] printTree1(TreeNode root) {
        int[][] result = new int[8][8];
        int i = 0, j = 0;
        TreeNode last = root, nlast = root;
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        queue.offer(root);
        while (queue.size() > 0) {
            TreeNode node = queue.poll();
            result[i][j++] = node.val;
            if (node.left != null) {
                queue.offer(node.left);
                nlast = node.left;
            }
            if (node.right != null) {
                queue.offer(node.right);
                nlast = node.right;
            }
            if (node == last) {
                last = nlast;
                i++;
                j = 0;
            }
        }
        return result;
    }

上一篇下一篇

猜你喜欢

热点阅读