Python程式查詢二叉樹節點的兄弟節點值
假設我們有一個值k和一個二叉搜尋樹,這裡每個節點要麼是葉子節點,要麼包含2個子節點。我們需要找到包含值k的節點,並返回其兄弟節點的值。
所以,如果輸入類似於

k = 4,那麼輸出將是10。
為了解決這個問題,我們將遵循以下步驟 -
定義一個函式util()。它將接收根節點、k和ans作為引數
如果根節點的左子節點不為空且根節點的右子節點不為空,則
返回
如果k大於根節點的值,則
如果根節點右子節點的值與k相同,則
將根節點左子節點的值插入到ans的末尾
返回
否則,
util(根節點的右子節點, k, ans)
如果k小於根節點的值,則
如果根節點右子節點的值與k相同,則
將根節點右子節點的值插入到ans的末尾
返回
否則,
util(根節點的左子節點, k, ans)
從主方法中執行以下操作 -
ans := 一個新的列表
util(根節點, k, ans)
返回ans[0]
讓我們看一下以下實現,以便更好地理解 -
示例
class TreeNode: def __init__(self, data, left = None, right = None): self.val = data self.left = left self.right = right def util(root, k, ans): if root.left is None and root.right is None: return if k > root.val: if root.right.val == k: ans.append(root.left.val) return else: util(root.right, k, ans) if k < root.val: if root.left.val == k: ans.append(root.right.val) return else: util(root.left, k, ans) class Solution: def solve(self, root, k): ans = [] util(root, k, ans) return ans[0] root = TreeNode(6) root.left = TreeNode(4) root.right = TreeNode(10) root.left.left = TreeNode(3) root.left.right = TreeNode(5) ob1 = Solution() print(ob1.solve(root, 4))
輸入
root = TreeNode(6) root.left = TreeNode(4) root.right = TreeNode(10) root.left.left = TreeNode(3) root.left.right = TreeNode(5) 4
輸出
10
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP