Python是一種廣泛使用的編程語言,可用于多種用途,包括構建樹結構。樹結構是一種層級數據結構,它具有父子關系。在構建樹結構時,您需要執行遍歷操作來訪問結點。Python提供了多種方法來遍歷樹結構,本文將簡要介紹其中的一些方法。
# 定義一個樹結點類 class TreeNode: def __init__(self, val): self.val = val self.left = None self.right = None # 創建一棵二叉樹 root = TreeNode(1) root.left = TreeNode(2) root.right = TreeNode(3) root.left.left = TreeNode(4) root.left.right = TreeNode(5) root.right.left = TreeNode(6)
前序遍歷
前序遍歷是指先遍歷根結點,再遍歷左子樹,最后遍歷右子樹。在Python中,可以使用遞歸或棧來實現前序遍歷。遞歸實現如下:
def preorderTraversal(root): if not root: return [] res = [] res.append(root.val) res += preorderTraversal(root.left) res += preorderTraversal(root.right) return res print(preorderTraversal(root))
中序遍歷
中序遍歷是指先遍歷左子樹,再遍歷根結點,最后遍歷右子樹。在Python中,可以使用遞歸或棧來實現中序遍歷。遞歸實現如下:
def inorderTraversal(root): if not root: return [] res = [] res += inorderTraversal(root.left) res.append(root.val) res += inorderTraversal(root.right) return res print(inorderTraversal(root))
后序遍歷
后序遍歷是指先遍歷左子樹,再遍歷右子樹,最后遍歷根結點。在Python中,可以使用遞歸或棧來實現后序遍歷。遞歸實現如下:
def postorderTraversal(root): if not root: return [] res = [] res += postorderTraversal(root.left) res += postorderTraversal(root.right) res.append(root.val) return res print(postorderTraversal(root))
層序遍歷
層序遍歷是指按照從上到下、從左到右的順序遍歷樹結構。在Python中,可以使用隊列實現層序遍歷:
def levelOrder(root): if not root: return [] res = [] queue = [root] while queue: level = [] for i in range(len(queue)): node = queue.pop(0) level.append(node.val) if node.left: queue.append(node.left) if node.right: queue.append(node.right) res.append(level) return res print(levelOrder(root))
總結
以上是Python中常用的樹結構遍歷方法。您可以根據具體情況選擇不同的遍歷方法來訪問樹結構的結點。
上一篇python 樹莓派硬件
下一篇python 樹控件6