イテレータ法を用いた中間順走査


以下に、中間順走査のイテレータ法についてのシンプルで簡単な実装方法といくつかのコード例を示します。

  1. スタックを使用したイテレータ法: 中間順走査では、現在のノードの左部分木を訪れた後、現在のノードを処理し、その後に右部分木を訪れる必要があります。この順序を保つために、スタックを使用します。

以下は、この方法の疑似コードです:

function inorderTraversal(root):
    stack = []
    current = root
    result = []
    while current is not null or stack is not empty:
        while current is not null:
            stack.push(current)
            current = current.left
        current = stack.pop()
        result.push(current.value)
        current = current.right
    return result
  1. 再帰を使用した中間順走査: 再帰を使用することでも中間順走査を実装することができます。以下は、再帰を使用した実装例です:
function inorderTraversal(root):
    result = []
    def traverse(node):
        if node is null:
            return
        traverse(node.left)
        result.push(node.value)
        traverse(node.right)
    traverse(root)
    return result

上記のコード例は、中間順走査のイテレータ法の基本的な実装方法です。それぞれの方法は、ツリーの要素を順番に処理するための効果的な手法です。

このように、中間順走査のイテレータ法を使用することで、ツリーの要素を簡単かつ効率的に処理することができます。これは、ツリーの探索やソートなど、さまざまなアルゴリズムやデータ処理に応用することができます。