在Python中查找给定二叉树中BST的最大总和值的程序
假设我们提供了一棵二叉树。 我们必须找出它的子树中是否存在二叉搜索树(BST),并找出最大BST的总和。 要找出总和,我们将添加该BST中每个节点的值。 我们将总和值作为输出返回。
因此,如果输入如下所示:
那么输出将为12。
给定的二叉树中的BST为 –
节点的总和= 12。
为了解决这个问题,我们将按照以下步骤操作:
- c:= 0
- m:= null
- value:= 0
- 定义recurse()函数。该函数将接收节点
- 如果节点不为null,则
- left_val:=递归(node的左子节点)
- right_val:=递归(node的右子节点)
- count:=负无穷
- 如果(节点的左节点为null或节点的左节点的值≤节点的值)和(右节点节点为null或节点的值≤节点的右节点的值) 则
- count:=left_val+right_val+1
- 如果count>c,则
- c:=count
- m:=node
- 返回count
- 返回0
- 如果节点不为null,则
- 定义calculate_sum()函数。该函数将接收根
- 如果根不为空,则
- calculate_sum(root的左子树)
- value:=value+root的值
- calculate_sum(root的右子树)
- 如果根不为空,则
- recurse(root)
- calculate_sum(m)
- 返回value
例子
让我们看看以下实现以更好地理解−