用Python查找好的叶节点对数的程序
假设我们有一棵二叉树,还有一个值距离d。两个不同叶节点的一对称为好的叶节点,当这两个节点之间的最短路径小于或等于距离d时。
因此,如果输入如下:
并且距离d = 4,则输出将为2,因为叶节点对为(8,7)和(5,6),因为它们的路径长度距离为2,但(7,5)或(8,6)或其他叶节点对不好,因为它们的路径长度为5,大于d = 4。
为了解决这个问题,我们将按照以下步骤进行 –
- sol:= 0
-
定义一个函数util()。这将取root
-
如果root为null,则
- 返回一个新列表
- 如果root是叶节点,则
- 返回一个含有一个pair [0,0]的数组
- 否则,
- cur:=一个新列表
-
l:=util(根的左边)
-
r:=util(根的右边)
-
对于l中的每个n,执行以下操作:
- n[1]:=n[1]+1
- 对于r中的每个n,执行以下操作:
- n[1]:=n[1]+1
- 对于r中的每个n,执行以下操作:
- 对于l中的每个n1,执行以下操作:
-
如果n[1] + n1 [1] <= d,则
- sol:=sol + 1
- 返回l+r
- cur:=一个新列表
-
从主方法执行以下步骤 –
-
util(root)
-
返回sol
让我们看一下下面的实现,以便更好地理解: