https://leetcode-cn.com/problems/binary-tree-inorder-traversal/
    需要注意的点
    树的遍历顺序
    前序,父左右
    中序,左父右
    后序 ,左右父
    1 递归
    2.迭代

    1. # Definition for a binary tree node.
    2. # class TreeNode(object):
    3. # def __init__(self, val=0, left=None, right=None):
    4. # self.val = val
    5. # self.left = left
    6. # self.right = right
    7. class Solution(object):
    8. def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
    9. res = []
    10. def dfs(root):
    11. if not root:
    12. return
    13. # 按照 左-打印-右的方式遍历
    14. dfs(root.left)
    15. res.append(root.val)
    16. dfs(root.right)
    17. dfs(root)
    18. return res
    1. # Definition for a binary tree node.
    2. # class TreeNode:
    3. # def __init__(self, val=0, left=None, right=None):
    4. # self.val = val
    5. # self.left = left
    6. # self.right = right
    7. class Solution:
    8. def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
    9. res = []
    10. stack =[]
    11. while stack or root:
    12. if root:
    13. stack.append(root)
    14. root = root.left
    15. else:
    16. tmp = stack.pop()
    17. res.append(tmp.val)
    18. root = tmp.right
    19. return res