[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);
Leave a comment