A*******e 发帖数: 2419 | 1 根->左->右和根->右->左到底算一列还是两列? |
k*****L 发帖数: 55 | 2 算一列
【在 A*******e 的大作中提到】 : 根->左->右和根->右->左到底算一列还是两列?
|
A*******e 发帖数: 2419 | 3 那同行同列的顺序随便?这样就简单了。周游所有节点,得到行列,然后按行列周游,
列优先。用一个二维矩阵,矩阵每个元素是个链表。
【在 k*****L 的大作中提到】 : 算一列
|
s**x 发帖数: 7506 | |
s**x 发帖数: 7506 | 5 查了下,几个网站上都是算的,感觉根本不make sense. 不算,好像挺难的。估计面试
官也当成算的了吧。 |
A*******e 发帖数: 2419 | 6 算不算其实不是关键,只要column是well defined就行。
抽象看无非如此:
y.column = f(x_1, x_2, ...),x_i是y的祖先节点。
如果f是常函数,那就相当于BFS。但也可以用DFS算出每个节点行数再遍历。
如果f定义如下:
return (y == y.parent.left) ? y.parent.column - 1 : y.parent.column + 1;
那就是大家讨论的答案。但这个会出现两节点同行列的情况。
无论多复杂的f,本质不变。都是算出节点行列值,按列优先遍历。
【在 s**x 的大作中提到】 : 查了下,几个网站上都是算的,感觉根本不make sense. 不算,好像挺难的。估计面试 : 官也当成算的了吧。
|