一、递归
java
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> list = new Arraylist <> ();//结果列表
Stack<TreeNode> stack =new Stack <> (); //栈
TreeNode cur = root ; //指向当前节点
while (cur! = null ||!stack.isEmpty() ){
if (cur !=null) {
stack.push(cur);
cur = cur.left;// 指向左子树
}
else {
cur = stack.pop();//当前节点为空说明已经到最左侧 弹出上一个根节点
list.add(cur.val);//添加到结果list中
cur = cur.right;//指向右子树
}
}
return list ;
}
}
二、遍历
java
class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList <Integer> ();
inorder (root , res);
return res ;
}
public void inorder(TreeNode root ,List<Integer> res){
if (root == null){
return ;
}
inorder(root.left , res);
res.add(root.val);
inorder(root.right ,res);
}
}