0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonで理解するTreeNode

Last updated at Posted at 2025-10-05

はじめに

Leetcodeでの学習中に初めて二分木表現に遭遇したので、情報を簡潔にまとめます。
TreeNodeクラスについて学習する際の参考になれば幸いです。

二分木(Binary Tree)とは?

二分木とは、各ノードが最大2つの子を持つデータ構造です。

例:
        3
       / \
      9   20
         /  \
        15   7

このような構造をPythonで表現するために、クラスを使用します。

TreeNodeクラスの定義

TreeNodeとは二分木のひとつのノードを表すクラスです。
Pythonでは次のように定義します。

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

各要素の意味

属性 説明
val 任意の値(例:int) ノードの値を保持
left TreeNode または None 左の子ノード
right TreeNode または None 右の子ノード

つまり、木構造の中で

  • 値(val)を持ち、
  • 左のノード(left)
  • 右のノード(right)
    を参照できるようにしたデータ型オブジェクトです。

この点自分は勘違いしていて理解が遅くなりました...
TreeNodePythonが最初から持っているデータ型ではなく、人が定義したユーザー定義型です。

TreeNodeを使って木を作る

例えば以下のような木を考えます。

        3
       / \
      9  20
         / \
        15  7

これをPyhonで表現すると以下のようになります:

node15 = TreeNode(15)
node7 = TreeNode(7)
node9 = TreeNode(9)
node20 = TreeNode(20, node15, node7)
root = TreeNode(3, node9, node20)

まとめ

本記事では、二分木の基本構造と、それをPythonで表現するためのTreeNodeについて解説しました。

  • 二分木は、各ノードが最大で2つの子ノードを持つ階層構造のデータ型である。
  • TreeNodePython標準のデータ型ではなく、自分で定義するクラス(ユーザー定義型) である
  • 各ノードはvalleftrightという3つの属性を持つ
  • 複数のTreeNodeを組み合わせて参照させることで木全体を表現できる

TreeNodeの理解は今後のアルゴリズム学習で避けて通れない基礎だと思うので、この記事を参考に理解が深まれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?