面小米算法岗的时候写过一次,当时用的C,现在用Java写一下。
思路:用栈来实现。构造栈,把根节点入栈。循环栈中的元素,出栈一个节点(第一次出的是根节点),输出data,如果有左孩子的话,左孩子进栈;有孩子同理。
private class Node{
int data;
Node lc;
Node rc;
public Node(int data){
this.data = data;
}
}
public void preOrder(Node root){
if(root == null){
System.out.println("空树");
}
Node temp = root;
Stack<Node> s = new Stack<Node>();
s.push(root);
while(!s.empty()){
Node p = s.pop();
System.out.print(p.data+" ");
if(p.lc != null){
s.push(p.lc);
}
if(p.rc != null){
s.push(p.rc);
}
}
}