import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Stack;
import org.junit.Test;
public class solution {
@Test
public void testFunc() throws Exception{
TreeNode root = new TreeNode(1);
TreeNode root2 = new TreeNode(2);
TreeNode root3 = new TreeNode(3);
root.left=root2;
root.right = root3;
preOrder(root);
}
//前序遍历的非递归实现---利用栈
public void preOrder(TreeNode root){
Stack<TreeNode> stack = new Stack<TreeNode>();
TreeNode p = root;
while (p!=null || !stack.isEmpty()) {
while(p!=null) {
System.out.println(p.val);
stack.push(p);
p=p.left;
}
if (!stack.isEmpty()) {
p=stack.pop();
p=p.right;
}
}
}
}