ree(1)-ツリーコンセプト、バイナリツリー、バイナリ検索ツリー



0.樹用語整理

  • ツリーの一番上のノードで、各ツリーには1つのノードしか存在しません.
  • 本は親ノードとは異なります.親ノードは、1つ以上のサブノードが存在する場合の概念です.
  • サブツリー(サブツリー)
    ツリー
  • の子ノードであり、親ノードとして機能するノード
  • を含む
    回数
  • ノードの最大サブノード数
  • のレベルで分割され、最後のノードであり、ターミナルノード(terminalノード)または外部ノード(externalノード)とも呼ばれる.
  • 葉樹には複数の木があります.
  • レベル
  • ノードからどのくらい離れているかを示す数字.
  • ノードのレベルは0で、レベルが下がるごとに1増加します.
  • 高さ
  • 本の最も遠いリーフノードからの距離は、リーフレベルの最大値を高めることが要求される.
  • 兄弟ノード(兄弟ノード)
  • 同じ親ノードを有する2つのノード
  • 1.バイナリツリー-バイナリツリー



    1.1. What is binary tree?

  • バイナリツリーは、上図のように、各ノードに最大2つのサブノードがあります.(left, right)
  • 種以上の樹種の中で、バイナリツリーが最も基本的であり、広く用いられている.
  • バイナリツリーを作成するには、2つの条件があります.
  • 本のノードを中心に、2つのサブツリーに分かれています.
  • に分かれている2つのサブツリーにも2つのサブツリーがあります.(ただし、サブツリーのノードに値があるとは限りません.)
  • # 이진트리 기본코드
    class BinaryTreeNode:
    	def __init__(self, value):
    	    self.left = None #왼쪽 서브노드
                self.value = value
                self.right = None #오른쪽 서브노드

    1.2. バイナリツリータイプ


    1) Binary Search Tree(BST)


    (画像ソース)

    すべての値はノードのサイズによって区別されます.
    詳細は以下の1.3です.バイナリ検索ツリー(BST)-バイナリ検索ツリーを参照してください.

    2) Balance



    バランスツリーとアンバランスツリーがあり、ここでの「バランスが正しい」とは、左右のノードの数が完全に同じである必要はありません.
    右側(アンバランス)ツリーのように、深刻なアンバランス状態でなければ、バランスツリーと呼ぶことができます.

    3) Complete Binary Tree



    ノードのバイナリツリーをツリーレベルで左側から塗りつぶします.

    4) Full Binary Tree



    ノードがChildを持っている場合、2つのChildを持っているか、いっそ1つも持っていないバイナリツリーを持っている.
    すなわち,完全な二叉木にはChildの親ノードが1つしか存在しない.

    5) Perfect Binary Tree



    すべてのノードには2つのChildがあり,正確なピラミッド形状のバイナリツリーがある.
    レベルの個数をnnnと呼ぶと、Perfectツリーの総ノード数=2 n–12^n-12 n–1となる.
    上の図に示すように、n=3 n=3 n=3(合計3レベル)、総ノード数=23の1=72^3-1=723の1=7である.

    1.3. バイナリ検索ツリー(BST)-バイナリ検索ツリー


    バイナリ検索ツリーは、ノードを正しく位置合わせする必要がある特定のタイプのバイナリツリーです.
    バイナリ検索ツリーは、値のサイズ条件に基づいてノードに値を割り当てる必要があります.

    値サイズ条件


    値サイズの条件は、次のノードの値サイズの順序に従います.
    오른쪽 서브노드의 값(right child) > 루트(부모)노드의 값(root node) > 왼쪽 서브노드의 값(left child)
  • の重複値を持つノードはありません.
  • 左側のサブツリーノードの値は、ルート(親)ノードの値よりも小さくなければなりません.
  • 右側のサブツリーノードの値は、ルート(親)ノードの値より大きい必要があります.
  • 上記の規定の理由は,左から右へ検索する構造であり,ツリーなどの資料構造は接続リストを参照して作成する概念である.
    さらに、バイナリ検索ツリーは、単純なバイナリツリーよりもノードの参照速度が速くなります.これは、値のサイズ条件を満たすためにノードに値を入れるためです.

    バイナリ検索ツリー検索プロシージャ


    また,探索速度は通常のバイナリツリーよりも速いため,ノードの挿入が容易である.
    (画像ソース)

    上記のバイナリ検索ツリーで43値のノードを検索します.
    1)43と50(ルートノード値)を比較する
    2)左ノードに移動(43<50)
    3)43と25を比較する
    4)43>25、右側ノードに移動
    5)43と40を比較する
    6)43>40、右側ノードに移動
    7)43個のノードの検索に成功
    Created on Nov 25, 2021
  • 作文