ํŠธ๋ฆฌ

์ž๋ฃŒ๊ตฌ์กฐ์ƒ์˜ ํŠธ๋ฆฌ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์„ฑ์„ ๊ฐ€์ง„๋‹ค.

  • ํŠธ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง„๋‹ค.
  • ํŠธ๋ฆฌ๋Š” 0๊ฐœ ์ด์ƒ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค.
  • ๊ทธ ์ž์‹๋…ธ๋“œ ๋˜ํ•œ 0๊ฐœ ์ด์ƒ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ •์˜ํ•œ๋‹ค.

ํŠธ๋ฆฌ๋Š” ๋น„ ์ˆœํ™˜ ๊ทธ๋ž˜ํ”„์˜ ํ•œ ์ข…๋ฅ˜ ์ด๋‹ค.

ํŠธ๋ฆฌ์˜ ์ข…๋ฅ˜

ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ (Full Binary Tree)

ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ

ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๋…ธ๋“œ์˜ ๊นŠ์ด๊ฐ€ ๊ฐ™์€ ์™„์ „ํ•œ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ๋งํ•œ๋‹ค.

์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ (Complete Binary Tree)

์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ

๋…ธ๋“œ์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„ (๋ ๋ถ€๋ถ„) ์„ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ชจ๋“  ์ž์‹ ๋…ธ๋“œ๋ฅผ 2๊ฐœ๋ฅผ ๊ฐ€์ง„ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ๋งํ•œ๋‹ค.

์ด์ง„ ํŠธ๋ฆฌ (Binary Tree)

ํŠธ๋ฆฌ์ค‘์—์„œ๋„ ๊ฐ ๋…ธ๋“œ์˜ ์ž์‹๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€ 2๊ฐœ ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ํŠธ๋ฆฌ๋ฅผ ๋งํ•œ๋‹ค.

ํŠธ๋ฆฌ์˜ ์ˆœํšŒ (ํƒ์ƒ‰)

ํŠธ๋ฆฌ์˜ ์ˆœํšŒ ๋ฐฉ์‹์€ ๋Œ€ํ‘œ์ ์œผ๋กœ ๋‹ค์Œ 4๊ฐ€์ง€ (์ „์œ„, ์ค‘์œ„, ํ›„์œ„, ๋ ˆ๋ฒจ) ๋กœ ๋‚˜๋‰œ๋‹ค.

์ „์œ„ ์ˆœํšŒ (Pre-order traversal)

  1. ๋ฃจํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•œ๋‹ค.
  2. ์™ผ์ชฝ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•œ๋‹ค.
  3. ์˜ค๋ฅธ์ชฝ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•œ๋‹ค.

๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ๋งจ ์ฒ˜์Œ ๋‚˜์˜จ๋‹ค.

static void preOrder(Node n) {
  if (n != null) {
    System.out.println(n.getData() + " ");
    preOrder(n.getLeft());
    preOrder(n.getRight());
  }
}

์ค‘์œ„ ์ˆœํšŒ (In-order traversal)

  1. ์™ผ์ชฝ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•œ๋‹ค.
  2. ๋ฃจํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•œ๋‹ค.
  3. ์˜ค๋ฅธ์ชฝ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•œ๋‹ค.
static void inOrder(Node n) {
  if (n != null) {
    inOrder(n.getLeft());
    System.out.println(n.getData() + " ");
    inOrder(n.getRight());
  }
}

ํ›„์œ„ ์ˆœํšŒ (Post-order traversal)

  1. ์™ผ์ชฝ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•œ๋‹ค.
  2. ์˜ค๋ฅธ์ชฝ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•œ๋‹ค.
  3. ๋ฃจํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•œ๋‹ค.
static void postOrder(Node n) {
  if (n != null) {
    postOrder(n.getLeft());
    postOrder(n.getRight());
    System.out.println(n.getData() + " ");
  }
}

๋ ˆ๋ฒจ ์ˆœํšŒ (Level-order traversal)

ํ•œ ๋ ˆ๋ฒจ์˜ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๊ณ  ๋‹ค์Œ ๋ ˆ๋ฒจ ๋ฐฉ๋ฌธํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ
๋ ˆ๋ฒจ์€ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฐฉ๋ฌธํ•œ๋‹ค.

๋ ˆ๋ฒจ ์ˆœํšŒ ํƒ์ƒ‰

  • ๋ฐฉ๋ฌธ์ˆœ์„œ : E > B > G > A > D > F > H > C