中序遍历:
class Solution:
def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
if not root:
return []
result=[]
stack=[]
cur=root
while cur or stack:
if cur:
stack.append(cur)
cur=cur.left
else:
cur=stack.pop()
result.append(cur.val)
cur=cur.right
return result
后序遍历:
class Solution:
def postorderTraversal(self,root:TreeNode) ->List[int]:
if not root:
return []
stack=[root]
result=[]
while stack:
node=stack.pop()
result.append(node.val)
if node.left:
stack.append(node.left)
if node.right:
stack.append(node.right)
return result[::-1]
前序遍历:
class Solution:
def preorderTraversal(self, root:TreeNode) -> List[int]:
if not root:
return []
stack=[root]
result=[]
while stack:
node=stack.pop()
result.append(node.val)
if node.right:
stack.append(node.right)
if node.left:
stack.append(node.left)
return result