面试题答案
一键面试class TreeNode:
def __init__(self, val=0, children=None):
self.val = val
self.children = children if children is not None else []
def sum_tree_nodes(root):
if not root:
return 0
total = root.val
for child in root.children:
total += sum_tree_nodes(child)
return total
可以通过以下方式调用这个函数:
# 示例创建树状链表结构
node1 = TreeNode(1)
node2 = TreeNode(2)
node3 = TreeNode(3)
node4 = TreeNode(4)
node5 = TreeNode(5)
node6 = TreeNode(6)
node1.children = [node2, node3]
node2.children = [node4, node5]
node3.children = [node6]
print(sum_tree_nodes(node1))
解释
-
定义数据结构:
TreeNode
类用于表示树状链表结构中的节点。每个节点包含一个数据值val
和一个指针数组children
,指针数组中的每个指针指向另一个链表的头节点(即子节点)。 -
递归函数
sum_tree_nodes
:- 检查根节点是否为空,如果为空则返回0。
- 初始化总和
total
为根节点的值。 - 遍历根节点的所有子节点,递归调用
sum_tree_nodes
并将返回值加到total
中。 - 最后返回
total
。
-
示例调用:创建了一个简单的树状链表结构并调用
sum_tree_nodes
函数来计算所有节点数据值的总和。