用 Python 编写程序查找二叉树节点的兄弟值
pythonserver side programmingprogramming更新于 2026/2/3 23:40:17
假设我们有一个值 k 和一个二叉搜索树,这里每个节点要么是叶子节点,要么包含 2 个子节点。我们必须找到包含值 k 的节点,并返回其兄弟节点的值。
因此,如果输入如下

k = 4.,则输出为 10。
为了解决这个问题,我们将遵循以下步骤 −
定义一个函数 util() 。这将取根、k、ans
如果根的左边不为空且根的右边不为空,则
返回
如果 k > 根的值,则
如果根的右边的值与 k 相同,则
在 ans 末尾插入根左边的值
return
否则,
util(right of root, k, ans)
如果 k < 根的值,则
如果根的右边的值与 k 相同,则
在答案末尾插入根的右边的值
return
否则,
util(left of root, k, ans)
从 main 方法中,执行以下操作 −
ans := a new list
util(root, k, ans)
return 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
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

