首页 > 其他 > 详细

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

时间:2020-04-04 23:03:51      阅读:65      评论:0      收藏:0      [点我收藏+]

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

 

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

    3
   /   9  20
    /     15   7

返回其层次遍历结果:

[
  [3],
  [20,9],
  [15,7]
]

 

提示:

  1. 节点总数 <= 1000
class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
        List<List<Integer>> lists = new ArrayList<>();
        if(root == null) return lists;
        Stack<TreeNode> s1 = new Stack<>();
        Stack<TreeNode> s2 = new Stack<>();
        boolean lToR = true;
        s1.push(root);
        while(!s1.isEmpty() || !s2.isEmpty()){
            List<Integer> list = new ArrayList<>();
            if(lToR){
                while(!s1.isEmpty()){
                    TreeNode node = s1.pop();
                    list.add(node.val);
                    if(node.left != null) s2.push(node.left);
                    if(node.right != null) s2.push(node.right);
                }
            }else{
                while(!s2.isEmpty()){
                    TreeNode node = s2.pop();
                    list.add(node.val);
            //先添加右节点
if(node.right != null) s1.push(node.right); if(node.left != null) s1.push(node.left); } } lToR = !lToR; lists.add(list); } return lists; } }

 

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

原文:https://www.cnblogs.com/zzytxl/p/12634122.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!