题目:给定一个二叉树的根节点 root ,返回它的 中序 遍历。
解法:迭代
思路:模拟
代码:
/**

  • Definition for a binary tree node.

  • public class TreeNode {

  • int val;
    
  • TreeNode left;
    
  • TreeNode right;
    
  • TreeNode() {}
    
  • TreeNode(int val) { this.val = val; }
    
  • TreeNode(int val, TreeNode left, TreeNode right) {
    
  •     this.val = val;
    
  •     this.left = left;
    
  •     this.right = right;
    
  • }
    
  • }
    */
    class Solution {
    public List inorderTraversal(TreeNode root) {
    List res = new ArrayList();
    Stack stack = new Stack();
    if(root==null){
    return res;
    }
    TreeNode pNode = root;
    while(!stack.isEmpty()||pNode!=null){
    if(pNode!=null){
    stack.push(pNode);
    pNode = pNode.left;
    } else{
    TreeNode popNode = stack.pop();
    res.add(popNode.val);
    pNode = popNode.right;
    }

     }
     return res;
    

    }
    }