
⭐ N개의 정수를 읽어서 insert 연산을 이용해서 이진탐색트리를 생성
⭐ M개의 정수를 한 개씩 읽어서 이진탐색트리에 존재하면 1 출력, 존재하지 않으면 0을 출력
⭐ BST insert, search 함수를 사용해야함!!!

⭐ BinSrchTree tree; : 이진탐색트리 객체 생성해주기
⭐ tree.insert(new BinaryNode(n)); : 트리에는 노드를 삽입해야하므로, new BinaryNode로 노드를 생성해줘야함.
int main() {
int N, M;
int n,m;
BinSrchTree tree;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> n;
tree.insert(new BinaryNode(n));
}
cin >> M;
for (int i = 0; i < M; i++) {
cin >> m;
tree.search(m);
}
}
⚠️ BinaryNode* node를 선언 안한 이유
--> tree.insert(new BinaryNode(n));에서 바로 new BinaryNode(n)을 사용하면서 포인터 객체를 생성해서 따로 정의할 필요가 X
* BinaryNode node을 선언하면 아래와 같이 적어주면 됨.BinaryNode* node = new BinaryNode(n); tree.insert(node);⚠️ new로 생성된 객체는 포인터임 --> 힙 메모리에 객체를 동적으로 생성, 그 객체의 주소를 반환
⚠️ BinaryTree 객체를 생성하면 이진 탐색 트리의 기능(search,insert)을 사용할 수 없음!!
⚠️ 객체를 직접 선언 VS 포인터로 객체를 선언
✔️ 객체를 직접 선언
: 함수 내에서 일시적으로 사용되는 객체, 명시적으로 메모리 해제를 할 필요가 없을 때
--> 객체는 스택 메모리에 할당됨
--> 만약에 BinSrchTree* tree로 선언하면 틀리진 않지만, 추가적인 메모리 관리가 필요함 --> 프로그램이 끝날 때 반드시delete tree;로 메모리 해제해줘야함.
✔️ 포인터로 객체를 선언
: 여러 함수에서 객체를 공유하거나, 동적 할당이 필요할 때