通用模板思路,先找到树的最左下角的指针,再进行出入栈
class Solution:
def inorderTraversal(self, root: TreeNode) -> List[int]:
res = []
stack = []
cur = root
while stack or cur: # 保证可以进入循环
while cur:
stack.append(cur) # 将左侧结点全部入栈
cur = cur.left # 指针跟着向左下角移动
cur = stack.pop() # 回退到栈顶非NULL结点
res.append(cur.val)
cur = cur.right
return res
# # 前序,相同模板
# while stack or cur:
# while cur:
# res.append(cur.val)
# stack.append(cur)
# cur = cur.left
# cur = stack.pop()
# cur = cur.right
# return res
# # 后序,相同模板
# while stack or cur:
# while cur:
# res.append(cur.val)
# stack.append(cur)
# cur = cur.right
# cur = stack.pop()
# cur = cur.left
# return res[::-1]