递归遍历
144.二叉树的前序遍历
题目链接:https://leetcode.cn/problems/binary-tree-preorder-traversal/
class Solution:
def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
result = []
def tran(root: TreeNode):
if root is None:
return None
result.append(root.val)
tran(root.left)
tran(root.right)
tran(root)
return result
145.二叉树的后序遍历
题目链接: https://leetcode.cn/problems/binary-tree-postorder-traversal/
class Solution:
def postorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
result = []
def tran(root: TreeNode):
if root is None:
return None
tran(root.left)
tran(root.right)
result.append(root.val)
tran(root)
return result
94.二叉树的中序遍历
题目链接: https://leetcode.cn/problems/binary-tree-inorder-traversal/
class Solution:
def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
result = []
def tran(root: TreeNode):
if root is None:
return None
tran(root.left)
result.append(root.val)
tran(root.right)
tran(root)
return result
迭代遍历
题目一样 直接提供代码
class Solution:
def preorderTraversal(self, root: Optional[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
class Solution:
def postorderTraversal(self, root: Optional[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 inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
if not root:
return []
stack = []
result = []
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