中序遍历:首先遍历左子树,然后访问根节点,最后遍历右子树(左->根->右)
顺序:中序遍历左子树->访问根节点->中序遍历右子树
方法一:
递归遍历:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
List<Integer> list = new ArrayList<Integer>();
public List<Integer> inorderTraversal(TreeNode root) {
if(root==null) return list;
inorderTraversal(root.left);
list.add(root.val);
inorderTraversal(root.right);
return list;
}
}
方法二:
非递归遍历:
public class zhongxubianli {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<Integer>();
Stack<TreeNode> stack1 = new Stack<TreeNode>();
TreeNode nownode =root;
while (!stack1.isEmpty() || nownode!=null){
if (nownode!=null){
stack1.push(nownode);
nownode=nownode.left;
}
else {
nownode=stack1.pop();
list.add(nownode.val);
nownode=nownode.right;
}
}
return list;
}
}