Algorithms
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]
]
Solution 1:通过DFS的方式来解决
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> wrapList = new ArrayList<>();
return listHelper(root, wrapList, 0);
}
private List<List<Integer>> listHelper(TreeNode node, List<List<Integer>> wrapList,int height) {
if (node == null) {
return wrapList;
}
if (height >= wrapList.size()) {
wrapList.add(new LinkedList<Integer>());
}
wrapList.get(height).add(node.val);
listHelper(node.left, wrapList, height + 1);
return listHelper(node.right, wrapList, height +1);
}
}
Solution 2:通过BFS的方式解决
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> wrapList = new ArrayList<>();
if(root == null){
return wrapList;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while (!queue.isEmpty()) {
int num = queue.size();
List<Integer> subList = new ArrayList<>();
for (int i = 0;i < num;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(subList);
}
return wrapList;
}
}
Review
How to Hire a Programmer
1、线上简单的测试,确认基本的职业素质。
2、查看相关的个人博客,或者相关作品,开源共享。
3、详细的视频会议包括:设计模式、数据结构和算法、正则表达式等
4、给一个今天必须做的实际项目给面试者
5、面试:15分钟的自我阐述