Python程式:檢查一棵樹是否為另一棵樹的子樹
假設我們有兩棵二叉樹。我們需要檢查第二棵樹是否為第一棵樹的子樹。
例如,輸入:

則輸出為True。
為了解決這個問題,我們將遵循以下步驟:
定義一個函式solve()。它將接收根節點和目標節點作為引數。
如果根節點和目標節點都為空,則
返回True
如果根節點為空或目標節點為空,則
返回False
如果根節點的值與目標節點的值相同,則
返回 solve(根節點的左子樹, 目標節點的左子樹) 並且 solve(根節點的右子樹, 目標節點的右子樹)
否則,
返回 solve(根節點的左子樹, 目標節點) 或 solve(根節點的右子樹, 目標節點)
讓我們來看下面的實現,以便更好地理解:
示例
class TreeNode: def __init__(self, data, left = None, right = None): self.val = data self.left = left self.right = right class Solution: def solve(self, root, target): if root == None and target == None: return True if root == None or target == None: return False if root.val == target.val: return self.solve(root.left, target.left) and self.solve(root.right, target.right) else: return self.solve(root.left, target) or self.solve(root.right, target) ob = Solution() root1 = TreeNode(6) root1.left = TreeNode(4) root1.right = TreeNode(10) root1.left.left = TreeNode(3) root1.left.right = TreeNode(5) root2 = TreeNode(4) root2.left = TreeNode(3) root2.right = TreeNode(5) print(ob.solve(root1, root2))
輸入
root1 = TreeNode(6) root1.left = TreeNode(4) root1.right = TreeNode(10) root1.left.left = TreeNode(3) root1.left.right = TreeNode(5) root2 = TreeNode(4) root2.left = TreeNode(3) root2.right = TreeNode(5)
輸出
True
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP