package leetcode;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class demo_94 {
//递归遍历
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> list=new ArrayList<Integer>();
order(root, list);
return list;
}
public void order(TreeNode root,List<Integer> list) {
if(root!=null) {
order(root.left, list);
list.add(root.val);
order(root.right, list);
}
}
//非递归遍历
public List<Integer> inorderTraversal2(TreeNode root) {
List<Integer> list=new ArrayList<Integer>();
Stack<TreeNode> stack=new Stack<TreeNode>();
TreeNode node=root;
TreeNode temp;
while(node!=null||!stack.isEmpty()) {
while(node!=null) {
stack.push(node);
node=node.left;
}
if(!stack.isEmpty()) {
temp=stack.pop();
list.add(temp.val);
node=temp.right;
}
}
return list;
}
}