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