头条一面挂,主要是面试官偏向于考察我不太擅长的网络和多进程通信。但耻辱的是Android面试考察的算法一般都非常简单,而这是这波跳槽唯一一次在数据结构算法上出问题。要求是十分钟内中序非递归遍历二叉树,我居然直接写了个BFS。
思路:利用循环操作一个栈。
public static void doErgodicTree(Node root) {
Stack<Node> stack = new Stack<>();
Node cur = root;
while (cur != null || !stack.empty()) {
while (cur != null) {
stack.push(cur);
cur = cur.left;
}
if (!stack.empty()) {
Node node = stack.pop();
System.out.println(node.value);
cur = node.right;
}
}
}
public static class Node {
Node left;
Node right;
int value;
}