๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Data Structure

Tree

Tree ๊ตฌ์กฐ

๋‚˜๋ฌด๋ฅผ ๋’ค์ง‘์–ด ๋†“์€ ๊ฒƒ์ฒ˜๋Ÿผ ํ•˜๋‚˜์˜ ๋…ธ๋“œ(root)๋กœ ๋ถ€ํ„ฐ ์‹œ์ž‘๋˜์–ด ์ž์‹ ๋…ธ๋“œ(child node)๋“ค์ด ๊ฐ€์ง€๋ฅผ ์น˜๋“ฏ ๋ป—์–ด ๋‚˜๊ฐ€๋Š” ๊ตฌ์กฐ์ด๋‹ค

์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด HTML์ด ์ข‹์€ ์˜ˆ์ด๋‹ค. ๋ฃจํŠธ๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์•„๋ž˜ ์ž์‹ ๋…ธ๋“œ๋“ค์ด ๋ป—์–ด ๋‚˜๊ฐ€๋Š” ๊ตฌ์กฐ์ด๋‹ค.

 

ํŠธ๋ฆฌ ๊ตฌ์กฐ ์šฉ์–ด

  • ๋ฃจํŠธ(root): ๋ถ€๋ชจ๊ฐ€ ์—†๋Š” ๋…ธ๋“œ
  • ๋ฆฌํ”„(leaf): ์ž์‹์ด ์—†๋Š” ๋…ธ๋“œ
  • ๋‚ด๋ถ€ ๋…ธ๋“œ: ๋ฃจํŠธ๋„ ๋ฆฌํ”„๋„ ์•„๋‹Œ ๋…ธ๋“œ
  • ์—ฃ์ง€(edge) or ๋ธŒ๋žœ์น˜(branch): ๋ถ€๋ชจ์™€ ์ž์‹์ด ์ด์–ด์ง€๋Š” ์—ฐ๊ฒฐ ์„ 
  • ํ˜•์ œ(siblings): ๋ถ€๋ชจ๊ฐ€ ๊ฐ™์€ ๋…ธ๋“œ๋“ค
  • path: ๋ฃจํŠธ์—์„œ ์ž์‹ ๋…ธ๋“œ๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒฝ๋กœ
  • ๋…ธ๋“œ์˜ ๋†’์ด: ๋ฃจํŠธ์—์„œ ์ž์‹ ๋…ธ๋“œ ์‚ฌ์ด์˜ ์—ฃ์ง€(edge) ๊ฐœ์ˆ˜
  • ๋…ธ๋“œ์˜ ๊นŠ์ด: ๋ฆฌํ”„์—์„œ ํ•ด๋‹น ๋…ธ๋“œ ์‚ฌ์ด์˜ ์—ฃ์ง€(edge) ๊ฐœ์ˆ˜
  • ํŠธ๋ฆฌ์˜ ๋†’์ด: ๋ชจ๋“  ๋…ธ๋“œ์˜ ๋†’์ด ๊ฐ’ ์ค‘ ์ตœ๋Œ€ ๊ฐ’
  • ํŠธ๋ฆฌ์˜ ๊นŠ์ด: ๋ชจ๋“  ๋…ธ๋“œ์˜ ๊นŠ์ด ๊ฐ’ ์ค‘ ์ตœ๋Œ€ ๊ฐ’
  • ๋…ธ๋“œ์˜ ํฌ๊ธฐ: ์ž๊ธฐ ์ž์‹ ์„ ํฌํ•จํ•œ ๊ทธ ๋…ธ๋“œ๊ฐ€ ๊ฐ€์ง„ ์ž์‹ ๋…ธ๋“œ์˜ ์ˆ˜

Big o

  • insertion: O(1)
  • deletion: O(n)
  • search: O(n)

 

javascript๋กœ Tree ๊ตฌํ˜„

 

์•„๋ž˜๋Š” tree๋ฅผ ๊ตฌํ˜„ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค์ด๋‹ค.
๋…ธ๋“œ๋ฅผ ์ž์‹์œผ๋กœ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ  ๋…ธ๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ๊นŒ์ง€ ๊ตฌํ˜„ํ•œ ์†Œ์Šค์ด๋‹ค.

 

const Tree = function (value) {
  var newTree = Object.create(treeMethods);
  newTree.value = value;
  newTree.children = [];
  return newTree;
};

const treeMethods = {};

treeMethods.addChild = function (value) {
  var node = new Tree(value);
  this.children.push(node);
};

treeMethods.contains = function (target) {
  var result = false;

  function recusion(node) {
    if (node.value === target) {
      result = true;
      return;
    }
    if (node.children.length > 0) {
      for (var i = 0; i < node.children.length; i++) {
        recusion(node.children[i]);
      }
    }
  }

  recusion(this);

  return result;
};

const tree = new Tree(3);
tree.addChild(2);
  • ์‹œ๊ฐ„ ๋ณต์žก๋„
    • insertion: O(1)
    • deletion: O(n)
    • search: O(n)
 

'Data Structure' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์„ ํƒ ์ •๋ ฌ(Selection Sort)  (0) 2024.03.03
๋ฒ„๋ธ” ์ •๋ ฌ(Bubble Sort)  (0) 2024.03.03
Binary Search Tree  (0) 2022.06.16