📅  最后修改于: 2023-12-03 15:36:19.224000             🧑  作者: Mango
在二叉树中,从根节点到任意一个叶子节点都是一条路径。如果要将二叉树中所有节点的路径打印出来,可以使用深度优先搜索(DFS)。
对于完整二叉树,我们可以分别在左子树和右子树中递归求解路径,然后将根节点和左右子树的路径进行拼接。
程序如下:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def print_paths(root: TreeNode) -> List[str]:
if not root:
return []
if not root.left and not root.right:
return [str(root.val)]
paths = []
left_paths = print_paths(root.left)
for p in left_paths:
paths.append(str(root.val) + '->' + p)
right_paths = print_paths(root.right)
for p in right_paths:
paths.append(str(root.val) + '->' + p)
return paths
其中,TreeNode
为二叉树节点的定义,print_paths
函数接收一个二叉树的根节点,返回一个所有节点路径的列表。
首先判断根节点是否为空,如果为空则返回空列表;如果是叶子节点,则返回自身的路径。
如果不是叶子节点,则对左右子树进行递归,得到所有的子树路径。然后将根节点和左右子树路径进行拼接,并添加到路径列表中。
最后返回所有路径列表即可。
使用示例:
root = TreeNode(1, TreeNode(2, TreeNode(4), TreeNode(5)), TreeNode(3, TreeNode(6), TreeNode(7)))
paths = print_paths(root)
for path in paths:
print(path)
输出结果:
1->2->4
1->2->5
1->3->6
1->3->7
以上便是从根到完整二叉树中所有节点的打印路径的介绍,可以帮助程序员更好地处理二叉树节点路径相关的问题。