#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
struct Node {
int data;
Node *left, *right;
Node(int val) : data(val), left(nullptr), right(nullptr) {}
};
struct BST {
Node* root = nullptr;
int size = 0;
// TODO: Cài đặt hàm chèn phần tử x
void insert(int x) {
// Sinh viên hoàn thành
}
// TODO: Cài đặt hàm tìm kiếm x, trả về true/false
bool search(int x) {
// Sinh viên hoàn thành
return false;
}
// TODO: Cài đặt hàm xóa phần tử x
void remove(int x) {
// Sinh viên hoàn thành
}
// TODO: Tính chiều cao của cây
int getHeight(Node* node) {
// Sinh viên hoàn thành
return -1;
}
// TODO: Duyệt In-order
void inOrder(Node* node, vector<int>& res) {
// Sinh viên hoàn thành
}
// TODO: Duyệt Pre-order
void preOrder(Node* node, vector<int>& res) {
// Sinh viên hoàn thành
}
// TODO: Duyệt Post-order
void postOrder(Node* node, vector<int>& res) {
// Sinh viên hoàn thành
}
// TODO: Tìm giá trị trong cây gần x nhất
int findClosest(int x) {
// Sinh viên hoàn thành
return 0;
}
// Helper function để gọi từ main
void printOrder(int type) {
vector<int> res;
if (type == 5) inOrder(root, res);
else if (type == 6) preOrder(root, res);
else if (type == 7) postOrder(root, res);
for (int i = 0; i < res.size(); ++i) {
cout << res[i] << (i == res.size() - 1 ? "" : " ");
}
cout << endl;
}
};
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int Q;
cin >> Q;
BST tree;
while (Q--) {
int type, x;
cin >> type;
if (type == 1) {
cin >> x;
tree.insert(x);
} else if (type == 2) {
cin >> x;
cout << (tree.search(x) ? "Yes" : "No") << "\n";
} else if (type == 3) {
cin >> x;
tree.remove(x);
} else if (type == 4) {
cout << tree.getHeight(tree.root) << "\n";
} else if (type >= 5 && type <= 7) {
tree.printOrder(type);
} else if (type == 8) {
cin >> x;
if (tree.root) cout << tree.findClosest(x) << "\n";
} else if (type == 9) {
cout << tree.size << "\n";
}
}
return 0;
}
CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBOb2RlIHsKICAgIGludCBkYXRhOwogICAgTm9kZSAqbGVmdCwgKnJpZ2h0OwogICAgTm9kZShpbnQgdmFsKSA6IGRhdGEodmFsKSwgbGVmdChudWxscHRyKSwgcmlnaHQobnVsbHB0cikge30KfTsKCnN0cnVjdCBCU1QgewogICAgTm9kZSogcm9vdCA9IG51bGxwdHI7CiAgICBpbnQgc2l6ZSA9IDA7CgogICAgLy8gVE9ETzogQ8OgaSDEkeG6t3QgaMOgbSBjaMOobiBwaOG6p24gdOG7rSB4CiAgICB2b2lkIGluc2VydChpbnQgeCkgewogICAgICAgIC8vIFNpbmggdmnDqm4gaG/DoG4gdGjDoG5oCiAgICB9CgogICAgLy8gVE9ETzogQ8OgaSDEkeG6t3QgaMOgbSB0w6xtIGtp4bq/bSB4LCB0cuG6oyB24buBIHRydWUvZmFsc2UKICAgIGJvb2wgc2VhcmNoKGludCB4KSB7CiAgICAgICAgLy8gU2luaCB2acOqbiBob8OgbiB0aMOgbmgKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLy8gVE9ETzogQ8OgaSDEkeG6t3QgaMOgbSB4w7NhIHBo4bqnbiB04butIHgKICAgIHZvaWQgcmVtb3ZlKGludCB4KSB7CiAgICAgICAgLy8gU2luaCB2acOqbiBob8OgbiB0aMOgbmgKICAgIH0KCiAgICAvLyBUT0RPOiBUw61uaCBjaGnhu4F1IGNhbyBj4bunYSBjw6J5CiAgICBpbnQgZ2V0SGVpZ2h0KE5vZGUqIG5vZGUpIHsKICAgICAgICAvLyBTaW5oIHZpw6puIGhvw6BuIHRow6BuaAogICAgICAgIHJldHVybiAtMTsKICAgIH0KCiAgICAvLyBUT0RPOiBEdXnhu4d0IEluLW9yZGVyCiAgICB2b2lkIGluT3JkZXIoTm9kZSogbm9kZSwgdmVjdG9yPGludD4mIHJlcykgewogICAgICAgIC8vIFNpbmggdmnDqm4gaG/DoG4gdGjDoG5oCiAgICB9CgogICAgLy8gVE9ETzogRHV54buHdCBQcmUtb3JkZXIKICAgIHZvaWQgcHJlT3JkZXIoTm9kZSogbm9kZSwgdmVjdG9yPGludD4mIHJlcykgewogICAgICAgIC8vIFNpbmggdmnDqm4gaG/DoG4gdGjDoG5oCiAgICB9CgogICAgLy8gVE9ETzogRHV54buHdCBQb3N0LW9yZGVyCiAgICB2b2lkIHBvc3RPcmRlcihOb2RlKiBub2RlLCB2ZWN0b3I8aW50PiYgcmVzKSB7CiAgICAgICAgLy8gU2luaCB2acOqbiBob8OgbiB0aMOgbmgKICAgIH0KCiAgICAvLyBUT0RPOiBUw6xtIGdpw6EgdHLhu4sgdHJvbmcgY8OieSBn4bqnbiB4IG5o4bqldAogICAgaW50IGZpbmRDbG9zZXN0KGludCB4KSB7CiAgICAgICAgLy8gU2luaCB2acOqbiBob8OgbiB0aMOgbmgKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICAvLyBIZWxwZXIgZnVuY3Rpb24gxJHhu4MgZ+G7jWkgdOG7qyBtYWluCiAgICB2b2lkIHByaW50T3JkZXIoaW50IHR5cGUpIHsKICAgICAgICB2ZWN0b3I8aW50PiByZXM7CiAgICAgICAgaWYgKHR5cGUgPT0gNSkgaW5PcmRlcihyb290LCByZXMpOwogICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gNikgcHJlT3JkZXIocm9vdCwgcmVzKTsKICAgICAgICBlbHNlIGlmICh0eXBlID09IDcpIHBvc3RPcmRlcihyb290LCByZXMpOwogICAgICAgIAogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgIGNvdXQgPDwgcmVzW2ldIDw8IChpID09IHJlcy5zaXplKCkgLSAxID8gIiIgOiAiICIpOwogICAgICAgIH0KICAgICAgICBjb3V0IDw8IGVuZGw7CiAgICB9Cn07CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShOVUxMKTsKCiAgICBpbnQgUTsKICAgIGNpbiA+PiBROwogICAgQlNUIHRyZWU7CgogICAgd2hpbGUgKFEtLSkgewogICAgICAgIGludCB0eXBlLCB4OwogICAgICAgIGNpbiA+PiB0eXBlOwogICAgICAgIGlmICh0eXBlID09IDEpIHsKICAgICAgICAgICAgY2luID4+IHg7CiAgICAgICAgICAgIHRyZWUuaW5zZXJ0KHgpOwogICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAyKSB7CiAgICAgICAgICAgIGNpbiA+PiB4OwogICAgICAgICAgICBjb3V0IDw8ICh0cmVlLnNlYXJjaCh4KSA/ICJZZXMiIDogIk5vIikgPDwgIlxuIjsKICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gMykgewogICAgICAgICAgICBjaW4gPj4geDsKICAgICAgICAgICAgdHJlZS5yZW1vdmUoeCk7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IDQpIHsKICAgICAgICAgICAgY291dCA8PCB0cmVlLmdldEhlaWdodCh0cmVlLnJvb3QpIDw8ICJcbiI7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlID49IDUgJiYgdHlwZSA8PSA3KSB7CiAgICAgICAgICAgIHRyZWUucHJpbnRPcmRlcih0eXBlKTsKICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gOCkgewogICAgICAgICAgICBjaW4gPj4geDsKICAgICAgICAgICAgaWYgKHRyZWUucm9vdCkgY291dCA8PCB0cmVlLmZpbmRDbG9zZXN0KHgpIDw8ICJcbiI7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IDkpIHsKICAgICAgICAgICAgY291dCA8PCB0cmVlLnNpemUgPDwgIlxuIjsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQo=