左根右
递归版本:
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
import java.util.*;
public class Solution {
private ArrayList<Integer> list = new ArrayList<Integer>();
public ArrayList<Integer> inorderTraversal(TreeNode root) {
inorderTree(root);
return list;
}
public void inorderTree(TreeNode root){
if(root==null) return ;
inorderTree(root.left);
list.add(root.val);
inorderTree(root.right);
return ;
}
}
非递归版本(使用栈)
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
import java.util.*;
public class Solution {
public ArrayList<Integer> inorderTraversal(TreeNode root) {
ArrayList<Integer> list = new ArrayList<Integer>();
Stack<TreeNode> stack = new Stack<TreeNode>();
if(root==null)return list;
while(!stack.isEmpty()||root!=null){
if(root!=null){
stack.push(root);
root = root.left;
}
else{
root = stack.pop();
list.add(root.val);
root = root.right;
}
}
return list;
}
}