-
バイナリツリーのレベル順挿入アルゴリズムの概要
- レベル順挿入では、ツリーの各レベルごとに左から右へと進みながら、次に挿入するべき位置を見つけます。
- 通常、ツリーの各ノードには左の子ノードと右の子ノードがあります。
- 挿入するノードを保持するためにキューを使用します。最初にルートノードをキューに追加し、以下のステップを繰り返します。
- キューからノードを取り出し、そのノードの子ノードがあるかを確認します。
- 子ノードがあれば、キューに子ノードを追加します。
- 子ノードがない場合、新しいノードを挿入します。
-
Pythonでのレベル順挿入のコード例
class Node:
def __init__(self, data):
self.data = data
self.left = None
self.right = None
def insertLevelOrder(root, data):
if root is None:
root = Node(data)
return
queue = []
queue.append(root)
while len(queue) > 0:
node = queue[0]
queue.pop(0)
if node.left is None:
node.left = Node(data)
return
else:
queue.append(node.left)
if node.right is None:
node.right = Node(data)
return
else:
queue.append(node.right)
# ツリーの生成と挿入の例
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)
print("挿入前のツリー:")
# 挿入前のツリーの表示
# 出力: 1 2 3 4 5
def printLevelOrder(root):
if root is None:
return
queue = []
queue.append(root)
while len(queue) > 0:
print(queue[0].data, end=" ")
node = queue.pop(0)
if node.left is not None:
queue.append(node.left)
if node.right is not None:
queue.append(node.right)
print()
printLevelOrder(root)
# 新しいノードの挿入
data = 6
insertLevelOrder(root, data)
print("挿入後のツリー:")
# 挿入後のツリーの表示
# 出力: 1 2 3 4 5 6
printLevelOrder(root)
この例では、与えられたバイナリツリーに対して、新しいノードをレベル順に挿入する方法が示されています。挿入前と挿入後のツリーの表示結果も提供されています。コードを実行して結果を確認することで、挿入操作の効果を確認できます。
この方法を使えば、バイナリツリーに新しいノードを簡単に挿入することができます。以上が、バイナリツリーへのレベル順挿入の方法とコード例です。