107. Binary Tree Level Order Traversal II
Easy
package leetcode.easy; import java.util.LinkedList; import java.util.List; import java.util.Queue; public class BinaryTreeLevelOrderTraversalII { @org.junit.Test public void test() { TreeNode tn11 = new TreeNode(3); TreeNode tn21 = new TreeNode(9); TreeNode tn22 = new TreeNode(20); TreeNode tn33 = new TreeNode(15); TreeNode tn34 = new TreeNode(7); tn11.left = tn21; tn11.right = tn22; tn21.left = null; tn21.right = null; tn22.left = tn33; tn22.right = tn34; tn33.left = null; tn33.right = null; tn34.left = null; tn34.right = null; System.out.println(levelOrderBottom1(tn11)); System.out.println(levelOrderBottom2(tn11)); } // DFS solution: public List<List<Integer>> levelOrderBottom1(TreeNode root) { List<List<Integer>> wrapList = new LinkedList<List<Integer>>(); levelMaker(wrapList,root,0); return wrapList; } private static void levelMaker(List<List<Integer>> list,TreeNode root,int level) { if (root == null) { return; } if (level >= list.size()) { list.add(0,new LinkedList<Integer>()); } levelMaker(list,root.left,level + 1); levelMaker(list,root.right,level + 1); list.get(list.size() - level - 1).add(root.val); } // BFS solution: public List<List<Integer>> levelOrderBottom2(TreeNode root) { Queue<TreeNode> queue = new LinkedList<TreeNode>(); List<List<Integer>> wrapList = new LinkedList<List<Integer>>(); if (root == null) { return wrapList; } queue.offer(root); while (!queue.isEmpty()) { int levelNum = queue.size(); List<Integer> subList = new LinkedList<Integer>(); for (int i = 0; i < levelNum; i++) { if (queue.peek().left != null) { queue.offer(queue.peek().left); } if (queue.peek().right != null) { queue.offer(queue.peek().right); } subList.add(queue.poll().val); } wrapList.add(0,subList); } return wrapList; } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。