package com.interview.books.leetcodeoj;
import com.interview.leetcode.utils.TreeNode;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
/**
* Created_By: stefanie
* Date: 14-12-26
* Time: 上午11:11
*/
public class LOJ94_BinaryTreeInorderTraversal {
//use Stack to push node.left;
//the while loop condition: (root != null || !stack.isEmpty())
//root = stack.pop(), nodes.add(root.val), root = root.right;
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> nodes = new ArrayList();
Stack<TreeNode> stack = new Stack();
while(root != null || !stack.isEmpty()){
while(root != null){
stack.push(root);
root = root.left;
}
if(!stack.isEmpty()){
root = stack.pop();
nodes.add(root.val);
root = root.right;
}
}
return nodes;
}
}