https://www.1point3acres.com/bbs/thread-785778-1-1.html
Coding:
1. 如果要设计一个公司的organizational report structure应该用什么数据结构? 回答: Tree, 然后写了一个TreeNode class, 包含 Title, Name, Salary, List<TreeNode> children
2. 找到直接下属平均工资最高的manager
很简单,秒了。dfs和bfs都写了。 不过他要我比较一下两者区别,说visit each node的次数不同;我一开始没搞懂。后来才明白他说的是,bfs要visit两次,一次是children list traversal, 一次是q.poll(); 而dfs只要visit 一次。
先给每个节点加上level
traverse(root.left, level + 1);
root 不处理
traverse(root.right, level + 1);
完成全部的标记之后,再次dfs一边
calculate(root.left)
if (root.left.level == root.level + 1)
list.add(root.left);
//right同样
list求平均值
//add to mng list
calculate(root.right)