Python程序:查找二叉树中每条对角线路径元素的和
假设我们有一个二叉树,我们需要找到从树的顶部到右下角的每条对角线的元素之和。
因此,如果输入如下所示:

则输出将为 [27, 18, 3],因为对角线为 [12,15]、[8,10]、[3]。所以和值为 [27, 18, 3]
为了解决这个问题,我们将遵循以下步骤:
定义一个函数 traverse()。它将接收节点、左侧节点数、输出作为参数。
如果节点为空,则
返回。
如果左侧节点数大于或等于输出的大小,则
将节点的数据插入到输出的末尾。
否则,
输出[左侧节点数] := 输出[左侧节点数] + 节点的数据。
如果节点的左子节点不为空,则
遍历(节点的左子节点, 左侧节点数+1, 输出)。
如果节点的右子节点不为空,则
遍历(节点的右子节点, 左侧节点数, 输出)。
在主方法中,执行以下操作:
输出 := 一个新的列表。
遍历(根节点, 0, 输出)。
返回输出。
让我们看看下面的实现,以便更好地理解:
示例
class TreeNode: def __init__(self, data, left = None, right = None): self.data = data self.left = left self.right = right class Solution: def solve(self, root): output = [] def traverse(node, numLeft, output): if not node: return if numLeft >= len(output): output.append(node.data) else: output[numLeft] += node.data if node.left: traverse(node.left, numLeft+1, output) if node.right: traverse(node.right, numLeft, output) traverse(root, 0, output) return output ob = Solution() root = TreeNode(12) root.left = TreeNode(8) root.right = TreeNode(15) root.left.left = TreeNode(3) root.left.right = TreeNode(10) print(ob.solve(root))
输入
root = TreeNode(12) root.left = TreeNode(8) root.right = TreeNode(15) root.left.left = TreeNode(3) root.left.right = TreeNode(10)
输出
[27, 18, 3]
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP