//1.递归
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<>();
TreeNode node = root;
inorder_Traversal(node, list);
return list;
}
public void inorder_Traversal(TreeNode node,List<Integer> list) {
if (node == null) return;
inorder_Traversal(node.left, list);
list.add(node.val);
inorder_Traversal(node.right, list);
}
//2.迭代
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<>();
Stack<TreeNode> stack = new Stack<>();
TreeNode node = root;
while(true) {
if (node != null) {
stack.push(node);
node = node.left;
}else {
if (!stack.isEmpty()) {
node = stack.pop();
list.add(node.val);
node = node.right;
}else {
break;
}
}
}
return list;
}