编辑代码

void main() {
  print('Hello world!     - dart.jsrun.net');
}

/// 迭代法
List<int> inorderTraversal(TreeNode? root) {
    List<int> res = [];
    if(root == null) return res;
    List<TreeNode> stacks = [];
    while(root != null || stacks.isNotEmpty) {
      while(root != null) {
          stacks.add(root);
          root = root?.left;
      }
      if(stacks.isNotEmpty) {
          TreeNode node = stacks.removeLast();
          res.add(node.val);
          root = node.right;       
      }
    }
    return res;
}


/// 递归法
List<int> inorderTraversal(TreeNode? root) {
    List<int> res = [];
    inorder(root, res);
    return res;
}

inorder(TreeNode? root, List<int> res) {
    if(root == null) return;
    inorder(root.left, res);
    res.add(root.val);
    inorder(root.right, res);
}


class TreeNode {
   int val;
   TreeNode? left;
   TreeNode? right;
   TreeNode([this.val = 0, this.left, this.right]);
}