给定一个无环的二叉树根节点,根节点所在行号为1,往下子节点所在
时间: 2024-03-21 12:42:57 浏览: 98
行号依次加1,每个节点都有一个权值。现在有一个整数k,请你求出二叉树中第k行所有节点的权值之和。
算法思路:
我们可以使用递归来解决这个问题。对于每个节点,我们可以判断它是否在第k行,如果在第k行,就将它的权值加到答案中;否则,我们就递归处理它的左右子树,直到找到第k行的节点或者遍历完整棵树为止。
以下是Python代码实现:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def getSumOfKthLevel(self, root: TreeNode, k: int) -> int:
if root is None:
return 0
if k == 1:
return root.val
return self.getSumOfKthLevel(root.left, k-1) + self.getSumOfKthLevel(root.right, k-1)
```
我们可以通过构造一棵测试树来验证上述代码的正确性:
```python
# 构造一棵测试树
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
root.right.left = TreeNode(6)
root.right.right = TreeNode(7)
# 测试
s = Solution()
print(s.getSumOfKthLevel(root, 1)) # 输出: 1
print(s.getSumOfKthLevel(root, 2)) # 输出: 5
print(s.getSumOfKthLevel(root, 3)) # 输出: 13
```
以上代码输出的结果应该是:
```
1
5
13
```
这说明我们的代码是正确的。
阅读全文