102. Binary Tree Level Order Traversal
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7] ]
Hide Similar Problems
/** * 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>> levelOrder(TreeNode root) { List<List<Integer>> returnVal = new ArrayList<List<Integer>>(); if (root == null) return returnVal; Queue<TreeNode> nodes = new ArrayDeque<TreeNode>(); nodes.offer(root); Queue<TreeNode> nextLevel = new ArrayDeque<TreeNode>(); List<Integer> currentList = new ArrayList<Integer>(); while(!nodes.isEmpty()) { TreeNode next = nodes.poll(); currentList.add(next.val); if(next.left != null) nextLevel.offer(next.left); if(next.right != null) nextLevel.offer(next.right); if(nodes.isEmpty()) { nodes = nextLevel; nextLevel = new ArrayDeque<TreeNode>(); returnVal.add(currentList); currentList = new ArrayList<Integer>(); } } return returnVal; } }
199. Binary Tree Right Side View
Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.
For example:
Given the following binary tree,
1 <--- / \ 2 3 <--- \ \ 5 4 <---
You should return [1, 3, 4]
.
Hide Tags
Hide Similar Problems
/** * 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<Integer> rightSideView(TreeNode root) { Deque<TreeNode> level = new ArrayDeque<TreeNode>(); List<Integer> results = new ArrayList<Integer>(); if(root == null) return results; level.add(root); while(!level.isEmpty()) { results.add(level.peekLast().val); Deque<TreeNode> currentLevel = new ArrayDeque<TreeNode>(); while(!level.isEmpty()) { TreeNode node = level.remove(); if(node.left != null) currentLevel.add(node.left); if(node.right != null) currentLevel.add(node.right); } level = currentLevel; } return results; } }