LeetCode第103题 – 二叉树的锯齿形层序遍历

129 views

题目

解答

class Solution {
    private List<List<Integer>> nodes = new ArrayList<>();

    public void zigzagLevelOrder(TreeNode node, int level) {

        if (node == null) {
            return;
        }

        if (nodes.size() <= level) {
            nodes.add(new ArrayList<Integer>());
        }

        if (level % 2 == 0) {
            nodes.get(level).add(node.val);
        } else {
            nodes.get(level).add(0, node.val);
        }
        ++level;
        if (node.left != null) {
            zigzagLevelOrder(node.left, level);
        }

        if (node.right != null) {
            zigzagLevelOrder(node.right, level);
        }
    }

    public List<List<Integer>> zigzagLevelOrder(TreeNode root) {

        zigzagLevelOrder(root, 0);
        return nodes;
    }
}

要点
遍历树时,保持先左后右的顺序,仅在保存节点的值时,依据顺序的奇偶性,调整插入数据的方式。



若非注明,均为原创,欢迎转载,转载请注明来源:LeetCode第103题 – 二叉树的锯齿形层序遍历

关于 JackieAtHome

基层程序员,八年之后重新启航

此条目发表在 Java, LeetCode 分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Protected with IP Blacklist CloudIP Blacklist Cloud