解法一:迭代法

  1. class Solution:
  2. def inorderTraversal(self, root: TreeNode) -> List[int]:
  3. ans, stack, cur = [], [], root
  4. while cur or stack:
  5. # 迭代至最左叶子,并将访问过的节点压栈
  6. while cur:
  7. stack.append(cur)
  8. cur = cur.left
  9. # 访问栈顶元素,然后将cur移至其右子树,对其右子树迭代
  10. cur = stack.pop()
  11. ans.append(cur.val)
  12. cur = cur.right
  13. return ans