zoukankan      html  css  js  c++  java
  • LeetCode 107. Binary Tree Level Order Traversal II

    题意:给你个二叉树,要求按深度下到上,输出每行的整数。

    我的思路:我采用了广度优先搜索,并利用两个变量,来计算当前所遍历的深度,然后就把每个深度的整数都加入到容器里,一旦深度+1 就把该容器添加到总容器里。

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        
        public List<List<Integer>> levelOrderBottom(TreeNode root) {
            return bfs(root);
        }
        
        private List<List<Integer> > bfs(TreeNode root) {
            List<List<Integer> > ans = new ArrayList<>();
            if (root == null) return ans;
            
            Queue<TreeNode> Q = new LinkedList<TreeNode>();
            Q.add(root);
            
            TreeNode endRight = root;     //记录当前深度最右边的节点
            TreeNode currentRight = null; //记录当前遍历的节点中最右边的孩子节点
            
            List<Integer> list = new ArrayList<>();
            
            while (!Q.isEmpty()) {
                TreeNode t = Q.poll();
                list.add(t.val);
                
                if(t.left != null) {
                    Q.add(t.left);
                    currentRight = t.left;
                }
                if(t.right != null) {
                    Q.add(t.right);
                    currentRight = t.right;
                }
                if(t == endRight) {   //如果当前节点等于当前深度最右边的节点,那么深度就要+1了
                    endRight = currentRight;
                    ans.add(0, list);
                    list = new ArrayList<>();
                }
            }
            return ans;
        }
    }
    

      

  • 相关阅读:
    Java语法基础
    配置环境变量
    常用Dos命令
    Python 之 进程与进程池的创建和使用
    python之进程间通信
    低级别网络接口-socket的应用和粘包现象
    网络编程之模块的使用
    Python异常类型
    练习题
    python 的re模块与正则表达式
  • 原文地址:https://www.cnblogs.com/sevenun/p/5913389.html
Copyright © 2011-2022 走看看