u***n 发帖数: 21026 | 1 从最后一层从左到右打印二叉树,然后再上一层,直到root
20分钟,不会,只会in-order, post-order |
h****e 发帖数: 2125 | 2 level order变体,5分钟可以搞定。
【在 u***n 的大作中提到】 : 从最后一层从左到右打印二叉树,然后再上一层,直到root : 20分钟,不会,只会in-order, post-order
|
l**o 发帖数: 356 | 3 可以从根开始从右往左层序遍历,然后结果reverse一下吗? |
z*********8 发帖数: 2070 | 4 or just use a stack
【在 l**o 的大作中提到】 : 可以从根开始从右往左层序遍历,然后结果reverse一下吗?
|
w**z 发帖数: 8232 | 5 这种傻逼题,有啥意思?谁他们的在工作里打印二叉树?
【在 u***n 的大作中提到】 : 从最后一层从左到右打印二叉树,然后再上一层,直到root : 20分钟,不会,只会in-order, post-order
|
u***n 发帖数: 21026 | 6 只要是刷题的,我铁定把面试fail了,哈哈,接着面 |
i*****h 发帖数: 1534 | 7 用stack好像也有问题,能具体说说怎么弄的吗?
【在 z*********8 的大作中提到】 : or just use a stack
|
J*********a 发帖数: 50 | 8 lz是不是面的时候紧张啊。。。
紧张的时候思路容易混乱,这题可以用stack加个list吧:
public static void printTreeNodeLeafToRoot(TreeNode root) {
if (root == null) return;
Deque stk = new LinkedList<>();
stk.push(root);
List list = new ArrayList<>();
list.add(root);
while (!list.isEmpty()) {
List curr = new ArrayList<>();
for (TreeNode tn : list) {
if (tn.right != null) {
stk.push(tn.right);
curr.add(tn.right);
}
if (tn.left != null) {
stk.push(tn.left);
curr.add(tn.left);
}
}
list = curr;
}
while (!stk.isEmpty()) {
System.out.println(stk.pop().val);
}
} |
M*****e 发帖数: 16 | 9 心态很好,加油
【在 u***n 的大作中提到】 : 只要是刷题的,我铁定把面试fail了,哈哈,接着面
|
a***0 发帖数: 53 | |
|
|
h**p 发帖数: 211 | 11 这题stack占空间太多,而且容易写错
LC的level order traversal, 然后把结果反一下 |
f****e 发帖数: 923 | 12 leetcode 原题吧?
https://leetcode.com/problems/binary-tree-level-order-traversal-ii/
Given a binary tree, return the bottom-up level order traversal of its nodes
' values. (ie, from left to right, level by level from leaf to root).
For example:
Given binary tree {3,9,20,#,#,15,7},
3
/
9 20
/
15 7
return its bottom-up level order traversal as:
[
[15,7],
[9,20],
[3]
]
【在 u***n 的大作中提到】 : 从最后一层从左到右打印二叉树,然后再上一层,直到root : 20分钟,不会,只会in-order, post-order
|
k**l 发帖数: 2966 | 13 直接 in order,
弄一个 vector of vectors, 行数代表层数。
in-order 每次 call子树的时候 pass 一个 level+1 parameter, 访问节点时按着自己
的 level 把 val push 到 vector 里面就行
【在 u***n 的大作中提到】 : 从最后一层从左到右打印二叉树,然后再上一层,直到root : 20分钟,不会,只会in-order, post-order
|
j***y 发帖数: 1640 | 14 不过呢,以前没有做过的话,临时想出来 20 分钟还是有点紧。 |
e***a 发帖数: 1661 | |
f**********e 发帖数: 288 | |
f**********e 发帖数: 288 | |
I*******x 发帖数: 69 | 18 来两个Queue和一个List
一个queue里面装了当前Level的node,从左往右放好的,再一个一个取出来,将他们的
值放进List,
另外一个queue放下一level的node,将当前level取出来的node的left和right放进去,
直到当前level的queue为空,然后将currentQueue = nextQueue;nextQueue = new
LinkedLIst(); list放进最终的List> 里面的第一个。
直接上code:
public List> levelOrderBottom(TreeNode root) {
List> result = new ArrayList>();
if(root == null) return result;
LinkedList cq = new LinkedList();
LinkedList nq = new LinkedList();
cq.add(root);
List numbers = new ArrayList();
while(!cq.isEmpty()){
TreeNode node = cq.remove();
numbers.add(node.val);
if(node.left != null){
nq.add(node.left);
}
if(node.right != null){
nq.add(node.right);
}
if(cq.isEmpty()){
cq = nq;
nq = new LinkedList();
result.add(0,numbers);
numbers = new ArrayList();
}
}
return result;
} |
u***n 发帖数: 21026 | 19 回家想了一想,没写code,直接画个草稿,和你的想法是一样的
从root开始,放入一个新Q,然后DeQ这个Q,把他的小孩按照right left的顺序enQ另外
一个新Q,前面那个DeQ出来的放在list的尾巴上,然后访问从前面那个Q从右到左的出
来的孩子Q,如此往复,每次deQ出来的放在list的最前面,最后这个list就是啦
回家画个图马上出来了,面试的时候傻傻的盯着屏幕想不出来,20分钟直接放弃
Amazon AWS组,不过我也没有多大兴趣去就是了,听说很忙
【在 I*******x 的大作中提到】 : 来两个Queue和一个List : 一个queue里面装了当前Level的node,从左往右放好的,再一个一个取出来,将他们的 : 值放进List, : 另外一个queue放下一level的node,将当前level取出来的node的left和right放进去, : 直到当前level的queue为空,然后将currentQueue = nextQueue;nextQueue = new : LinkedLIst(); list放进最终的List> 里面的第一个。 : 直接上code: : public List> levelOrderBottom(TreeNode root) { : List> result = new ArrayList>(); : if(root == null) return result;
|
J*********a 发帖数: 50 | 20
【在 u***n 的大作中提到】 : 回家想了一想,没写code,直接画个草稿,和你的想法是一样的 : 从root开始,放入一个新Q,然后DeQ这个Q,把他的小孩按照right left的顺序enQ另外 : 一个新Q,前面那个DeQ出来的放在list的尾巴上,然后访问从前面那个Q从右到左的出 : 来的孩子Q,如此往复,每次deQ出来的放在list的最前面,最后这个list就是啦 : 回家画个图马上出来了,面试的时候傻傻的盯着屏幕想不出来,20分钟直接放弃 : Amazon AWS组,不过我也没有多大兴趣去就是了,听说很忙
|
|
|
I*******g 发帖数: 7600 | 21 你怎么一天到晚都在面试
当前工作不忙
老板不管你?
【在 u***n 的大作中提到】 : 从最后一层从左到右打印二叉树,然后再上一层,直到root : 20分钟,不会,只会in-order, post-order
|
u***n 发帖数: 21026 | 22 工作很忙啊,忙才没时间准备老fail掉
今天的面试上上周就schedule了,我基本没准备就上了,实在忙的没时间刷题
CC里面没有一个人想留下来的,连我印度PM自己都在刷题跑路
大家心知肚明,不说而已
【在 I*******g 的大作中提到】 : 你怎么一天到晚都在面试 : 当前工作不忙 : 老板不管你?
|
h*******3 发帖数: 122 | 23 看你说你在CC工作好些年了,早有h1b了,按理来说CC工资不会低吧。
而且,有意思的是,认识的几个在CC的印度人,根本不想换Full time job, 人家工资
10w,
还是小城市,而且一天就干几个小时活,想换项目,随便几个电话搞定,说full time
太累了。。。
【在 u***n 的大作中提到】 : 工作很忙啊,忙才没时间准备老fail掉 : 今天的面试上上周就schedule了,我基本没准备就上了,实在忙的没时间刷题 : CC里面没有一个人想留下来的,连我印度PM自己都在刷题跑路 : 大家心知肚明,不说而已
|
u***n 发帖数: 21026 | 24 啊,我怎么刚好是相反的
time
【在 h*******3 的大作中提到】 : 看你说你在CC工作好些年了,早有h1b了,按理来说CC工资不会低吧。 : 而且,有意思的是,认识的几个在CC的印度人,根本不想换Full time job, 人家工资 : 10w, : 还是小城市,而且一天就干几个小时活,想换项目,随便几个电话搞定,说full time : 太累了。。。
|