[DA] Tree

ํŠธ๋ฆฌ

  • ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์˜ ์ผ์ข…์œผ๋กœ ์ •์ ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ„์„ ์ด ํ•˜๋‚˜ ๋ฐ–์— ์—†๋Š” ๊ตฌ์กฐ
  • ๋ฃจํŠธ ์ •์ ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์ •์ ์€ ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ ๋ถ€๋ชจ ์ •์ ์„ ๊ฐ€์ง„๋‹ค.
  • ์ •์ ์ด N๊ฐœ์ธ ํŠธ๋ฆฌ๋Š” ๋ฐ˜๋“œ์‹œ N-1 ๊ฐœ์˜ ๊ฐ„์„ ์„ ๊ฐ€์ง„๋‹ค.
  • ๋ฃจํŠธ์—์„œ ํŠน์ • ์ •์ ์œผ๋กœ ๊ฐ€๋Š” ๊ฒฝ๋กœ๋Š” ์œ ์ผํ•˜๋‹ค.

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

  • ์ด์ง„ ํŠธ๋ฆฌ๋Š” ๊ฐ ์ •์ ์ด ์ตœ๋Œ€ 2๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์ง€๋Š” ํŠธ๋ฆฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ๋Š” ๋งˆ์ง€๋ง‰ Level ์ œ์™ธํ•œ ๋ชจ๋“  ์ •์ ์ด ์ฑ„์›Œ์ ธ ์žˆ๋Š” ํŠธ๋ฆฌ
  • ์ •์  N ๊ฐœ ํŠธ๋ฆฌ ๋†’์ด log N

Array

// 0๋ฒˆ ์ธ๋ฑ์Šค๋Š” ๋น„์›€
// Left = Index * 2
// Right = Index * 2 + 1
// Parent = floor(Index / 2)
const tree = [undefined, 1, 2, 3, 4, 5, 6];

Linked List

class Tree {
  constructor(node) {
    this.root = node;
  }

  display() {
    const queue = new Queue();
    queue.enqueue(this.root);
    while (queue.size) {
      const currentNode = queue.dequeue();
      console.log(currentNode.value);
      if (currentNode.left) queue.enqueue(currentNode.left);
      if (currentNode.right) queue.enqueue(currentNode.right);
    }
  }
}

const tree = new Tree(new Node(1));
tree.root.left = new Node(2);
tree.root.right = new Node(3);
tree.root.left.left = new Node(4);

Categories:

Updated:

Leave a comment