【LeetCode刷题-树】-- 107.二叉树的层序遍历II

107.二叉树的层序遍历II

image-20231211105723719

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
   
    public List<List<Integer>> levelOrderBottom(TreeNode root) {
   
        List<List<Integer>> ans = new LinkedList<List<Integer>>();
        if(root==null){
   
            return ans;
        }
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        while(!queue.isEmpty()){
   
            List<Integer> levelList = new ArrayList<>();
            int size = queue.size();
            for(int i = 0;i<size;i++){
   
                TreeNode now = queue.poll();
                levelList.add(now.val);
                if(now.left!=null){
   
                queue.offer(now.left);
                }
                if(now.right!=null){
   
                    queue.offer(now.right);
                }
            }
            //遍历完一层节点后,将存储该层节点值得列表添加到结果列表头部
            ans.add(0,levelList);
        }
        return ans;
    }
}
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
   
    public List<List<Integer>> levelOrderBottom(TreeNode root) {
   
        List<List<Integer>> ans = new LinkedList<List<Integer>>();
        if(root==null){
   
            return ans;
        }
        Queue<TreeNode> queue = new LinkedList<>();
        Stack<List<Integer>> stack = new Stack<>();
        queue.offer(root);
        while(!queue.isEmpty()){
   
            List<Integer> levelList = new ArrayList<>();
            int size = queue.size();
            for(int i = 0;i<size;i++){
   
                TreeNode now = queue.poll();
                levelList.add(now.val);
                if(now.left!=null){
   
                queue.offer(now.left);
                }
                if(now.right!=null){
   
                    queue.offer(now.right);
                }
            }
            //定义一个栈,每次添加时入栈
            stack.push(levelList);
        }
        //弹出元素
        while(!stack.isEmpty()){
   
            ans.add(stack.pop());
        }
        return ans;
    }
}

相关推荐

  1. 107. II

    2023-12-12 08:12:03       35 阅读
  2. LeetCode100】【

    2023-12-12 08:12:03       14 阅读
  3. leetcode 102.

    2023-12-12 08:12:03       29 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-12 08:12:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-12 08:12:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-12 08:12:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-12 08:12:03       20 阅读

热门阅读

  1. 鸿蒙(HarmonyOS)应用开发——应用通知

    2023-12-12 08:12:03       48 阅读
  2. 四种数据库执行脚本文件导入数据的方式

    2023-12-12 08:12:03       38 阅读
  3. 上确界(supremum)

    2023-12-12 08:12:03       38 阅读
  4. 解决IDEA配置gitignore不生效

    2023-12-12 08:12:03       44 阅读
  5. ARMday6作業

    2023-12-12 08:12:03       43 阅读
  6. ReactNative0.73发布,架构升级与更好的调试体验

    2023-12-12 08:12:03       44 阅读
  7. 后端开发面试题

    2023-12-12 08:12:03       40 阅读
  8. Win32 HIWORD和LOWORD宏学习

    2023-12-12 08:12:03       38 阅读
  9. axios无法获取response headers中的内容

    2023-12-12 08:12:03       41 阅读