%%{init: {"flowchart" : { "curve" : "basis" } } }%%
graph TD
  1((1)) --- 2((2))
  1 --- 5((5))
  2 --- 3((3))
  2 --- 4((4))
  5 --- 6((6))
  5 --- 8((8))
  5 --- 9((9))
  6 --- 7((7))

グラフのうち,連結でかつ閉路がないグラフをという. また,その特徴から,次の条件を満たすものは木であると言える.

  • 連結で閉路がない
  • 閉路がなく\(|E| = |V| - 1\)
  • 連結で\(|E| = |V| - 1\)
  • 連結で全ての辺が橋
  • 閉路がなく,辺を1つ加えると必ず閉路ができる
  • 任意の2ノード間のパスが1本

また,任意の連結グラフについて,単一始点最短路を求めたとき,全ノードと,使われた辺の集合で構成されるグラフは木である.(ただし単一始点最短路存在するグラフに限る.)証明は省略する.

木でよく出る単語

木では,任意のノードをと定めることができる.根が定められた木を根付き木という.

深さ

根と定めたノードからの距離を深さという.(ここでいう距離では,辺の重みは考慮しない.) 根付き木において,任意のノードについて,自分と接続された,自分より深さが1低いノードをそのノードのという.根は親を持たず,根以外のノードは必ず親を1つだけもつ.また,自分と接続された親以外の全てのノードのことをという.さらに,あるノードから子をたどってたどり着けるノードはそのノードの子孫といい,あるノード\(u\)があるノード\(v\)の子孫であるとき,\(v\)は\(u\)のにあるという.また,\(u\)を\(v\)の祖先であるという.

部分木

木において,ある1辺を取り除くと,必ず2つの木となる.木から,ある1辺を取り除いて得られる木を全てその木の部分木という.根付き木においてあるノードとその下の部分を取り出した部分とも言える.

また,あるノードからその親

LCA

ある2つのノードが与えられたとき,その2つのノードを自分の下に持つノードを,共通祖先といい共通祖先のうち,最も深さが深い(大きい)ものをその2つのノードの**LCA(最小共通祖先)**という.

n分木

根付き木において,全てのノードが\(n\)個以下の子を持つとき,それをn分木という.また,全てのノードがちょうど\(n\)個の子を持つとき,それを完全n分木という.