中序遍历
public List<Integer> inorderTraversal(TreeNode root) {
Stack<TreeNode> stack = new Stack<>();
List<Integer> list = new ArrayList<>();
if(root==null)return list;
stack.push(root);
while(root!=null || !stack.isEmpty()){
//迭代左节点
while(root!=null){
root = root.left;
if(root!=null){
stack.push(root);
}
}
//左节点为空 栈中弹出该节点
root = stack.pop();
list.add(root.val); //添加改节点的值
//判断右节点
root = root.right;
if(root!=null){
stack.push(root);
}else{
if(!stack.isEmpty()){
root = stack.pop(); //弹出上一个节点
list.add(root.val); //添加改节点的值
root = root.right;
if(root!=null){
stack.push(root);
}
}
}
}
return list;
}