๐˜ฝ๐™ž๐™ฃ๐™–๐™ง๐™ฎ ๐™๐™ง๐™š๐™š

uuuouuoยท2022๋…„ 7์›” 21์ผ
0
post-thumbnail

๐Ÿ“– ์ด๋ถ„ ํŠธ๋ฆฌ


ํŠน์ง•

  • ๋ชจ๋“  ๋…ธ๋“œ๋“ค์ด 2๊ฐœ์˜ ๋ถ€ํŠธ๋ฆฌ๋ฅผ ๊ฐ–๋Š” ํŠธ๋ฆฌ
  • ๋…ธ๋“œ๊ฐ€ ์ž์‹ ๋…ธ๋“œ๋ฅผ ์ตœ๋Œ€ํ•œ 2๊ฐœ๊นŒ์ง€๋งŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ํŠธ๋ฆฌ
    • ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ, ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์žˆ์Œ
  • ๋ ˆ๋ฒจ i์—์„œ์˜ ๋…ธ๋“œ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋Š” 2^i
    -๋†’์ด๊ฐ€ h์ธ ์ด๋ถ„ ํŠธ๋ฆฌ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋…ธ๋“œ์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๋Š” (h+1)๊ฐœ, ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋Š” (2^h+1-1)๊ฐœ

๐Ÿ’ฌ ์ข…๋ฅ˜

  • Full Binary Tree (ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ)
  • Complete Binary Tree (์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ)
  • Skewed Binary Tree (ํŽธํ–ฅ ์ด์ง„ ํŠธ๋ฆฌ)

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


  • ์ตœ๋Œ€ ๋…ธ๋“œ ๊ฐœ์ˆ˜์ธ (2^h+1-1)์˜ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง„ ์ด์ง„ ํŠธ๋ฆฌ
  • ๋ฃจํŠธ๋ฅผ 1๋ฒˆ์œผ๋กœ ํ•ด์„œ (2^h+1-1)๊นŒ์ง€ ์ •ํ•ด์ง„ ์œ„์น˜์— ๋Œ€ํ•œ ๋…ธ๋“œ ๋ฒˆํ˜ธ ๊ฐ€์ง

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


  • ๋†’์ด๊ฐ€ h์ด๊ณ  ๋…ธ๋“œ์˜ ์ˆ˜๊ฐ€ n๊ฐœ ์ผ ๋•Œ (๋‹จ, h+1 <= n < (2^h+1-1)) Full Binary Tree์˜ ๋…ธ๋“œ๊ฐ€ 1๋ฒˆ๋ถ€ํ„ฐ n๋ฒˆ๊นŒ์ง€ ๋นˆ์ž๋ฆฌ๊ฐ€ ์—†๋Š” ์ด์ง„ ํŠธ๋ฆฌ
  • ๋…ธ๋“œ๊ฐ€ 10๊ฐœ์ธ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ

โ—พ Skewed Binary Tree (ํŽธํ–ฅ ์ด์ง„ ํŠธ๋ฆฌ)


  • ๋†’์ด h์— ๋Œ€ํ•œ ์ตœ์†Œ ๊ฐœ์ˆ˜์˜ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๋ฉด์„œ ํ•œ์ชฝ ๋ฐฉํ–ฅ์˜ ์ž์‹ ๋…ธ๋“œ๋งŒ ๊ฐ€์ง„ ์ด์ง„ ํŠธ๋ฆฌ

๐Ÿ’ฌ ์ˆœํšŒ


  • ํŠธ๋ฆฌ์˜ ๊ฐ ๋…ธ๋“œ๋ฅผ ์ค‘๋ณต๋˜์ง€ ์•Š๊ฒŒ ์ „๋ถ€ ๋ฐฉ๋ฌธํ•˜๋Š” ๊ฒƒ์„ ๋งํ•จ
  • ํŠธ๋ฆฌ๋Š” ๋น„์„ ํ˜• ๊ตฌ์กฐ๋ผ์„œ ์„ ํ˜• ๊ตฌ์กฐ์—์„œ์™€ ๊ฐ™์ด ์„ ํ›„ ์—ฐ๊ฒฐ ๊ด€๊ณ„๋ฅผ ์•Œ ์ˆ˜ ์—†์Œ

3๊ฐ€์ง€ ๊ธฐ๋ณธ์ ์ธ ์ˆœํšŒ ๋ฐฉ๋ฒ•

  • ์ „์œ„ ์ˆœํšŒ (Preorder traversal)
  • ์ค‘์œ„ ์ˆœํšŒ (Inorder traversal)
  • ํ›„์œ„ ์ˆœํšŒ (Postorder traversal)

โ—พ ์ „์œ„ ์ˆœํšŒ (Preorder traversal)

  • VLR (๋ฃจํŠธ-์™ผ์ชฝ-์˜ค๋ฅธ์ชฝ)
  • ์ž์† ๋…ธ๋“œ๋ณด๋‹ค ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ๋จผ์ € ๋ฐฉ๋ฌธ
  • ์ˆ˜ํ–‰ ๋ฐฉ๋ฒ•
    • ํ˜„์žฌ ๋…ธ๋“œ n ๋ฐฉ๋ฌธ : V
    • ํ˜„์žฌ ๋…ธ๋“œ n์˜ ์™ผ์ชฝ ๋ถ€ํŠธ๋ฆฌ ์ด๋™ : L
    • ํ˜„์žฌ ๋…ธ๋“œ n์˜ ์˜ค๋ฅธ์ชฝ ๋ถ€ํŠธ๋ฆฌ ์ด๋™ : R

์•Œ๊ณ ๋ฆฌ์ฆ˜

// ๋…ธ๋“œ ํด๋ž˜์Šค
class Node {
	String data;
    int left;
    int right;

	public Node(String data, int left, int right) {
		this.data = data;
        this.left = left;
        this.right = right;
	}
}

public void inOrder(Node node) {
    System.out.println(node.data); // ์ „์œ„ ์ˆœํšŒ ์ˆœ์„œ ์ถœ๋ ฅ
	if (node.left != 0) // ์™ผ์ชฝ ๋…ธ๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ˆœํšŒ
		inOrder(node.left);
	if (node.right != 0) // ์˜ค๋ฅธ์ชฝ ๋…ธ๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ˆœํšŒ
       inOrder(node.right);
}

์˜ˆ์‹œ

โ—พ ์ค‘์œ„ ์ˆœํšŒ (Inorder traversal)

  • LVR(์™ผ์ชฝ-๋ฃจํŠธ-์˜ค๋ฅธ์ชฝ)
  • ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์ค‘๊ฐ„์— ๋ฐฉ๋ฌธ
  • ์ˆ˜ํ–‰ ๋ฐฉ๋ฒ•
    • ํ˜„์žฌ ๋…ธ๋“œ n์˜ ์™ผ์ชฝ ๋ถ€ํŠธ๋ฆฌ ์ด๋™ : L
    • ํ˜„์žฌ ๋…ธ๋“œ n ๋ฐฉ๋ฌธ : V
    • ํ˜„์žฌ ๋…ธ๋“œ n์˜ ์˜ค๋ฅธ์ชฝ ๋ถ€ํŠธ๋ฆฌ ์ด๋™ : R

์•Œ๊ณ ๋ฆฌ์ฆ˜

// ๋…ธ๋“œ ํด๋ž˜์Šค
class Node {
	String data;
    int left;
    int right;

	public Node(String data, int left, int right) {
		this.data = data;
        this.left = left;
        this.right = right;
	}
}

public void inOrder(Node node) {
	if (node.left != 0) // ์™ผ์ชฝ ๋…ธ๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ˆœํšŒ
		inOrder(node.left);
    System.out.println(node.data); // ์ค‘์œ„ ์ˆœํšŒ ์ˆœ์„œ ์ถœ๋ ฅ
	if (node.right != 0) // ์˜ค๋ฅธ์ชฝ ๋…ธ๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ˆœํšŒ
       inOrder(node.right);
}

์˜ˆ์‹œ

โ—พ ํ›„์œ„ ์ˆœํšŒ (Postorder traversal)

  • LRV(์™ผ์ชฝ-์˜ค๋ฅธ์ชฝ-๋ฃจํŠธ)
  • ๋ฃจํŠธ ๋…ธ๋“œ๋ณด๋‹ค ์ž์†์„ ๋จผ์ € ๋ฐฉ๋ฌธ
  • ์ˆ˜ํ–‰ ๋ฐฉ๋ฒ•
    • ํ˜„์žฌ ๋…ธ๋“œ n์˜ ์™ผ์ชฝ ๋ถ€ํŠธ๋ฆฌ ์ด๋™ : L
    • ํ˜„์žฌ ๋…ธ๋“œ n์˜ ์˜ค๋ฅธ์ชฝ ๋ถ€ํŠธ๋ฆฌ ์ด๋™ : R
    • ํ˜„์žฌ ๋…ธ๋“œ n ๋ฐฉ๋ฌธ : V

์•Œ๊ณ ๋ฆฌ์ฆ˜

// ๋…ธ๋“œ ํด๋ž˜์Šค
class Node {
	String data;
    int left;
    int right;

	public Node(String data, int left, int right) {
		this.data = data;
        this.left = left;
        this.right = right;
	}
}


public void postOrder(Node node) {
	if (node.left != 0) // ์™ผ์ชฝ ๋…ธ๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ˆœํšŒ
		inOrder(node.left);
	if (node.right != 0) // ์˜ค๋ฅธ์ชฝ ๋…ธ๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ˆœํšŒ
       inOrder(node.right);
	System.out.println(node.data); // ํ›„์œ„ ์ˆœํšŒ ์ˆœ์„œ ์ถœ๋ ฅ
}

์˜ˆ์‹œ

๐Ÿ’ฌ ์ด๋ถ„ ํŠธ๋ฆฌ ํ‘œํ˜„


โ—พ Array๋ฅผ ์ด์šฉํ•œ ํ‘œํ˜„

  • ๋…ธ๋“œ ๋ฒˆํ˜ธ๋ฅผ Array์˜ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉ
  • ๋†’์ด๊ฐ€ h์ธ ์ด๋ถ„ ํŠธ๋ฆฌ๋ฅผ ์œ„ํ•œ Array์˜ ํฌ๊ธฐ๋Š” (2^h+1-1)
    - 0๋ฒˆ์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ

๋‹จ์ 

  • ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ๋‚ญ๋น„
  • Array์˜ ํฌ๊ธฐ ๋ณ€๊ฒฝ ์–ด๋ ค์›€

โ—พ ์—ฐ๊ฒฐList๋ฅผ ์ด์šฉํ•œ ํ‘œํ˜„

  • Array๋ฅผ ์ด์šฉํ•œ ์ด์ง„ ํŠธ๋ฆฌ ํ‘œํ˜„์˜ ๋‹จ์  ๋ณด์™„

0๊ฐœ์˜ ๋Œ“๊ธ€