📅  最后修改于: 2023-12-03 14:58:40.720000             🧑  作者: Mango
本题要求完成一个函数,输入为一颗二叉搜索树以及其中的一个节点,输出为除该节点相邻节点外的节点值之和。需要特别注意的是,所给二叉搜索树是一个有效的二叉树,已经被构建好且不存在重复节点。
输入:
4
/
2 6
/ \ /
1 3 5 7
节点值为2
输出:
12
解释:除2节点的相邻节点1,3外,所有节点之和为12。
由题目可知,所给的二叉搜索树已经被构建好,因此可以采用递归的方法求解。
下面是Python的实现代码:
def sum_exclude_neighbours(root, node):
if not root:
return 0
if root == node:
return (root.left.val if root.left else 0) + (root.right.val if root.right else 0)
if root.val > node.val:
return root.val + sum_exclude_neighbours(root.left, node)
else:
return root.val + sum_exclude_neighbours(root.right, node)
本算法采用递归方式实现,时间复杂度为O(n),空间复杂度为O(h),其中h为二叉树的深度。