全文が一目でわかる
Likou などのプラットフォームでは、バイナリ ツリーが事前定義されていることがよくありますが、Python のインタビューでは、バイナリ ツリーを自分で作成する必要がある場合があります。また、バイナリ ツリーをインスタンス化すると、その後のデバッグがより便利になります。
1. ツリーノードを定義する
バイナリ ツリー ノードは、ビルドする前に定義する必要があります。
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
val、left、right にはデフォルト値が与えられていることに注意してください。この時点で、TreeNode() を呼び出すと、値 0 のルート ノードが返されます。バイナリ ツリーを形成するには、これらの孤立したノードを接続する必要があります。
2. ツリーノードの初期化
ツリーノードの値を初期化します。
node1 = TreeNode(5)
node2 = TreeNode(3)
node3 = TreeNode(7)
node4 = TreeNode(1)
node5 = TreeNode(4)
node6 = TreeNode(6)
node7 = TreeNode(9)
初期化後、これらのノードの値はデフォルトの 0 ではなくなりますが、依然として分離されたノードであるため、接続する必要があります。
3. ツリーノードを接続する
ツリー ノードを接続し、ルート ノードのルートを定義します。
node1.left = node2
node1.right = node3
node2.left = node4
node2.right = node5
node3.left = node6
node3.right = node7
root = node1
この時点で、Python を使用したバイナリ ツリーの構築が完了しました。
さらに、最初にリーフ ノードを作成し、次にその 2 つを接続する親ノードを作成することもできます。
node6 = TreeNode(6)
node7 = TreeNode(9)
node3 = TreeNode(7, node6, node7)
4. 完全なコード
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
node4 = TreeNode(1)
node5 = TreeNode(4)
node6 = TreeNode(6)
node7 = TreeNode(9)
node2 = TreeNode(3, node4, node5)
node3 = TreeNode(7, node6, node7)
node1 = TreeNode(5, node2, node3)
root = node1