剑指 Offer 32 - III. 从上到下打印二叉树 III--🀄️


剑指 Offer 32 - III. 从上到下打印二叉树 III

难度中等 76
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。

例如:
给定二叉树: [3,9,20,null,null,15,7],
    3
   /
  9  20
    /  
   15   7

返回其层次遍历结果:
[
  [3],
  [20,9],
  [15,7]
]

好理解

public List<List<Integer>> levelOrder(TreeNode root) &#123;
        Queue<TreeNode> queue = new LinkedList<>();
        List<List<Integer>> res = new ArrayList<>();
        if(root != null) queue.add(root);
        while(!queue.isEmpty()) &#123;
            List<Integer> tmp = new ArrayList<>();
            for(int i = queue.size(); i > 0; i--) &#123;
                TreeNode node = queue.poll();
                tmp.add(node.val);
                if(node.left != null) queue.add(node.left);
                if(node.right != null) queue.add(node.right);
            &#125;
            if(res.size() % 2 == 1) Collections.reverse(tmp);
            res.add(tmp);
        &#125;
        return res;
    &#125;

作者:jyd
链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/solution/mian-shi-ti-32-iii-cong-shang-dao-xia-da-yin-er--3/

不太懂

    public List<List<Integer>> levelOrder(TreeNode root) &#123;
        Queue<TreeNode> queue = new LinkedList<>();
        List<List<Integer>> res = new ArrayList<>();
        if(root != null) queue.add(root);
        while(!queue.isEmpty()) &#123;
            LinkedList<Integer> tmp = new LinkedList<>();
            for(int i = queue.size(); i > 0; i--) &#123;
                TreeNode node = queue.poll();
                if(res.size() % 2 == 0) tmp.addLast(node.val); // 偶数层 -> 队列头部
                else tmp.addFirst(node.val); // 奇数层 -> 队列尾部
                if(node.left != null) queue.add(node.left);
                if(node.right != null) queue.add(node.right);
            &#125;
            res.add(tmp);
        &#125;
        return res;
    &#125;
作者:jyd
链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/solution/mian-shi-ti-32-iii-cong-shang-dao-xia-da-yin-er--3/

文章作者:   future
版权声明:   本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 future !
 上一篇
43. 字符串相乘--🀄️ 43. 字符串相乘--🀄️
43. 字符串相乘难度中等 574给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示
下一篇 
113. 路径总和 II--🀄️ 113. 路径总和 II--🀄️
113. 路径总和 II难度中等 435给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。 示例 1:输入:root = [5,
  目录