美文网首页
算法(3)层次顺序遍历二叉树

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

作者: 来搞事情 | 来源:发表于2018-09-16 09:27 被阅读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;
        }
    
    

    相关文章

      网友评论

          本文标题:算法(3)层次顺序遍历二叉树

          本文链接:https://www.haomeiwen.com/subject/jruxnftx.html