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 |