Java日记2018-06-03

2018-06-03  本文已影响0人  hayes0420

32.1 从上往下打印二叉树
使用一个辅助的队列,来打印先后的数字,今天学习到的一点是LinkedList实现queue的接口,所以可以使用queue的陷入先出的特性。学习了一下,发现居然也实现了stack的方法,真是相当奇怪的。

//从上往下打印二叉树
    private static LinkedList<TreeNode> que = new LinkedList<TreeNode>();
    public static void printtree(TreeNode root){
        if(root!=null) que.add(root);
        TreeNode temp = null;
        while(que.peek()!=null) {
            System.out.println(que.peek().val);
            temp=que.poll();
            if(temp.left!=null) que.add(temp.left);
            if(temp.right!=null) que.add(temp.right);
        }
    }

32.2 把二叉树打印成多行
几乎等于上边的,但是怎么分割打印,增加两个整数计算层,还是有点绕的

// 打印成多行
    public static void printtreeM(TreeNode root) {
        if (root != null)
            que.add(root);
        TreeNode temp = null;
        int count = 0;//记录当前层已经打印的个数
        int last = 0;//记录当前层一个有多少个
        while (!que.isEmpty()) {
            last = que.size();
            count = 0;
            while (count < last) {
                System.out.print(que.peek().val);
                temp = que.poll();
                if (temp.left != null)
                    que.add(temp.left);
                if (temp.right != null)
                    que.add(temp.right);
                count++;
            }
            System.out.println();
        }
    }
上一篇下一篇

猜你喜欢

热点阅读