ノードのルートからのパスを出力する方法


  1. 深さ優先探索(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, [])
  1. 幅優先探索(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語のブログ投稿を作成することができます。