美文网首页
二叉树Z字形遍历

二叉树Z字形遍历

作者: 今天不想掉头发 | 来源:发表于2019-07-27 11:18 被阅读0次
/**
 * 二叉树Z型遍历
 */
public class ZTraverse {
    public static class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;

        public TreeNode(int val) {
            this.val = val;
        }
    }

    public static List<List<Integer>> traverse(TreeNode root) {
        LinkedList<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        boolean leftToRight = false;
        List<List<Integer>> res = new ArrayList<>();
        while (!queue.isEmpty()) {
            int size = queue.size();
            List<Integer> midList = new ArrayList<>();
            // 注意这里取top的时候是不一样的
            while (size-- > 0) {
                TreeNode top;
                //System.out.println(top.val);
                if (leftToRight) {
                    top = queue.poll();
                    if (top.left != null) queue.offer(top.left);
                    if (top.right != null) queue.offer(top.right);
                } else {
                    top = queue.pollLast();
                    if (top.right != null) queue.offer(top.right);
                    if (top.left != null) queue.offer(top.left);
                }
                midList.add(top.val);
            }
            res.add(midList);
            leftToRight = !leftToRight;
        }
        return res;
    }

    public static void main(String[] args) {
        TreeNode root = new TreeNode(1);
        root.left = new TreeNode(2);
        root.right = new TreeNode(3);
        root.left.left = new TreeNode(4);
        root.right.right = new TreeNode(5);
        List<List<Integer>> res = traverse(root);
        System.out.println(res);
    }
}

相关文章

  • 二叉树Z字形遍历

  • 剑指第三周

    对称的二叉树 其实就是要遍历嘛 按之字形顺序打印二叉树 同样是简单的层次遍历 把二叉树打印成多行 这个更简单了 栈...

  • LeetCode-6 Z字形变换

    题目:6. Z字形变换 难度:中等 分类:字符串 解决方案:字符串遍历 今天我们学习第6题Z字形变换,这是一个字符...

  • leetcode--103-Z字形层次遍历

    103. 二叉树的锯齿形层次遍历 给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一...

  • z字形

    解法二,每一行定义一个stringbuilder,

  • 剑指offer刷题记录

    之字形遍历二叉树 对curLevel的处理 这里对于curLevel的处理要格外注意,如果采用 的方式,最后得到的...

  • 二叉树 基础操作

    二叉树的使用 二叉树结构 先序创建二叉树 DFS 先序遍历二叉树 中序遍历二叉树 后序遍历二叉树 BFS 层次遍历...

  • 关于二叉树的算法题

    前序遍历中序遍历后序遍历判断是否是平衡二叉树判断是否是对称二叉树判断二叉树高度按照层遍历二叉树判断二叉树宽度

  • 二叉树遍历

    二叉树 二叉树的存储结构 前序遍历 中序遍历 后序遍历 遍历代码 反转二叉树 深入学习二叉树 二叉树-你必须要懂!...

  • 二叉树操作

    树节点 逐行顺序解析二叉树 前序遍历二叉树 中序遍历二叉树 后序遍历二叉树 删除指定数值的节点 前序遍历顺序存储的...

网友评论

      本文标题:二叉树Z字形遍历

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