๐ ๋ฌธ์
๐ญ ์๊ฐ์ ํ๋ฆ
์ค๋ณต์ ํ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ Key ๊ฐ์ ๋ฐ๊ฒฌํ๋ฉด ๋ฐ๋ก root๋ฅผ ๋ฆฌํดํ๋ค.
์ต์ข ์ฝ์ ์์น์ ๋ ธ๋๋ฅผ ์์ฑํ๊ณ ๋ถ๋ชจ๊ฐ ์์์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ฅผ ์ง์ ํด์ผ ํ๋ฏ๋ก
์์ ๋ ธ๋๋ก ๋ด๋ ค๊ฐ ๋๋ง๋ค ๋ถ๋ชจ ๋ ธ๋๋ฅผ ํตํด์ผํ๋ค.
๐ ํ์ด
Node* insert(Node* root, int Key)
{
Node* parent = root;
Node* tempNode = root;
while (tempNode != nullptr) {
parent = tempNode;
if (Key == tempNode->data) return root;
else tempNode = (Key < tempNode->data) ? tempNode->left : tempNode->right;
}
if (parent->data > Key) parent->left = new Node(Key);
else if (parent->data < Key) parent->right = new Node(Key);
return root;
}
์ฌ์ฌํด์ ํน์ ์์๋ฅผ ์ฐพ๋ find ํจ์๊น์ง ์์ฑํ๋ค.
Node* find(Node* root, int key) {
Node* parent = root;
while (root != nullptr) {
if (key == root->data) return root;
else {
parent = root;
root = (key < root->data) ? root->left : root->right;
}
}
return root;
}
Binary Search Tree (BST)๋ Set , Heap, Priority Queue ๊ตฌํ์ ํ์ฉ๋๋ค.
์ด์ค์ Set ์ ์ค๋ณต์ ํ์ฉํ์ง ์๊ณ Heap, Priority Queue๋ ์ค๋ณต์ ํ์ฉํ๋ค.
'Algorithm > Algorithm (๋ฌธ์ ํ์ด)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[LeetCode] Same Tree (0) | 2022.09.05 |
---|---|
[๋ฐฑ์ค 1158] ์์ธํธ์ค ๋ฌธ์ (2) | 2021.03.06 |
[๋ฐฑ์ค 11651] ์ขํ ์ ๋ ฌํ๊ธฐ 2 (0) | 2021.02.21 |
[Geeks for Geeks] Validate an IP Address (0) | 2021.02.20 |
[C++] Iterator (0) | 2021.02.20 |