📅  最后修改于: 2023-12-03 15:10:00.994000             🧑  作者: Mango
N 叉树是每个节点有多个子节点的树结构,打印 N 叉树的所有根到叶路径可以使用深度优先搜索(DFS)算法来实现。
首先我们需要定义一个递归函数 dfs(node, current_path)
,其中 node
表示当前节点,current_path
表示当前路径。如果该节点为叶子节点,就将当前路径加入结果列表中。否则,遍历该节点的每个子节点,对每个子节点递归调用 dfs()
函数,将 current_path
加上当前节点值。
下面是 Python 语言实现的代码:
class Node:
def __init__(self, val=None, children=None):
self.val = val
self.children = children
class Solution:
def dfs(self, node, current_path, result):
if not node.children:
result.append(current_path + [node.val])
else:
for child in node.children:
self.dfs(child, current_path + [node.val], result)
def print_paths(self, root):
if not root:
return []
result = []
self.dfs(root, [], result)
return result
下面是一个 N 叉树结构的示例:
1
/ | \
2 3 4
/ \
5 6
我们可以使用以下代码来生成该 N 叉树:
n5 = Node(val=5)
n6 = Node(val=6)
n2 = Node(val=2, children=[n5, n6])
n3 = Node(val=3)
n4 = Node(val=4)
root = Node(val=1, children=[n2, n3, n4])
然后调用 print_paths()
函数即可打印所有根到叶路径:
>>> s = Solution()
>>> paths = s.print_paths(root)
>>> for path in paths:
... print(path)
...
[1, 2, 5]
[1, 2, 6]
[1, 3]
[1, 4]