- 深さ優先探索(DFS)を使用する方法: ツリーを深さ優先で探索し、各ノードで現在のパスを更新します。再帰関数を使用して実装することができます。以下はPythonの例です。
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def print_path(root, path):
if root is None:
return
path.append(root.val)
if root.left is None and root.right is None:
print(path)
else:
print_path(root.left, path.copy())
print_path(root.right, path.copy())
# 使用例
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
print_path(root, [])
- 幅優先探索(BFS)を使用する方法: ツリーを幅優先で探索し、各ノードで現在のパスを更新します。キューを使用して実装することができます。以下はPythonの例です。
from collections import deque
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def print_path(root):
if root is None:
return
queue = deque([(root, [root.val])])
while queue:
node, path = queue.popleft()
if node.left is None and node.right is None:
print(path)
if node.left:
queue.append((node.left, path + [node.left.val]))
if node.right:
queue.append((node.right, path + [node.right.val]))
# 使用例
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
print_path(root)
これらの方法を使用すると、ツリーのルートから各ノードへのパスを出力することができます。この情報をもとに、約1000語のブログ投稿を作成することができます。