107_二叉树的层序遍历II
107_二叉树的层序遍历II
package 二叉树.BT; import java.util.ArrayList; import java.util.Deque; import java.util.LinkedList; import java.util.List; import java.util.Queue; /** * https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/ * @author Huangyujun *宝贝:咱要知道咱使用的是ArrayList 可以从任何地方进行添加 *(想实现倒序:逆着插入:一直插入索引为 0 的位置) */ public class _107_二叉树的层序遍历II { 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; } } //从叶子到根的遍历(层序遍历)~ 思路:倒序:只需要不断插入第一个位置 public List<List<Integer>> levelOrderBottom(TreeNode root) { List<Integer> item = new ArrayList<>(); List<List<Integer>> result = new ArrayList<>(); if(root == null) return result; Queue<TreeNode> queue = new LinkedList<>(); queue.offer(root); int levelSize = 1; while(!queue.isEmpty()) { TreeNode node = queue.poll(); levelSize--; item.add(node.val); if(node.left != null) { queue.offer(node.left); } if(node.right != null) { queue.offer(node.right); } if(levelSize == 0) { result.add(0, item); item = new ArrayList<>(); levelSize = queue.size(); } } return result; } }
本文来自博客园,作者:一乐乐,转载请注明原文链接:https://www.cnblogs.com/shan333/p/15709220.html