问题:
中序遍历二叉树
分析:
1.递归解法
2.栈+循环
嵌套循环
内层循环一直判断当前节点有没有左节点,有就入栈,当前节点等于左节点,没有的话,就出栈打印,当前节点再等于右节点,然后回到开始进行循环判断右节点的左节点是不是空。
代码:
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class Solution {
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> listTree = new ArrayList<Integer>();
TreeNode cur = root;
Stack s = new Stack();
while(!s.empty()||cur!=null){
while(cur!=null){
s.push(cur);
cur = cur.left;
}
cur = (TreeNode) s.pop();
listTree.add(cur.val);
cur = cur.right;
}
return listTree;
}
}