Skip to content

Instantly share code, notes, and snippets.

@asyncins
Created July 5, 2020 05:05
Show Gist options
  • Save asyncins/2b7202f340a62dc3a67ae0e99265b3fe to your computer and use it in GitHub Desktop.
Save asyncins/2b7202f340a62dc3a67ae0e99265b3fe to your computer and use it in GitHub Desktop.
[算法-二叉树前中后序遍历]
class TreeNode:
def __init__(self, val):
self.val = val
self.left, self.right = None, None
# 二叉树前中后序遍历
class Solution:
def __init__(self):
self.traverse = []
# 前序遍历组合
def preorder(self, root):
if root:
self.traverse.append(root.val)
self.preorder(root.left)
self.preorder(root.right)
return self.traverse
# 中序遍历组合
def inorder(self, root):
if root:
self.inorder(root.left)
self.traverse.append(root.val)
self.inorder(root.right)
return self.traverse
# 后序遍历组合
def postorder(self, root):
if root:
self.postorder(root.left)
self.postorder(root.right)
self.traverse.append(root.val)
return self.traverse
# 初始化构造二叉树
Tree = TreeNode(2)
Tree.left = TreeNode(1)
Tree.right = TreeNode(3)
Tree.right.left = TreeNode(7)
Tree.right.right = TreeNode(9)
# 执行不同类型的遍历并输出
solution = Solution()
prev = solution.preorder(Tree) # [2, 1, 3, 7, 9]
solution = Solution()
inor = solution.inorder(Tree) # [1, 2, 7, 3, 9]
solution = Solution()
post = solution.postorder(Tree) # [1, 7, 9, 3, 2]
print(prev, inor, post)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment