Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- struct Node {
- int data;
- Node* left = nullptr;
- Node* right = nullptr;
- Node(int value) {
- data = value;
- }
- };
- class BST {
- private:
- Node* root = nullptr;
- Node* addNode(int value, Node* current) {
- if (!current) {
- return new Node(value);
- }
- if (value < current->data) {
- current->left = addNode(value, current->left);
- }
- else if (value > current->data) {
- current->right = addNode(value, current->right);
- }
- return current;
- }
- void _inorder(Node* current) const {
- if (current) {
- _inorder(current->left);
- std::cout << current->data << " ";
- _inorder(current->right);
- }
- }
- public:
- void insert(int value) {
- root = addNode(value, root);
- }
- void inorder() const {
- _inorder(root);
- std::cout << "\n";
- }
- };
- int findDistance(Node *root, int x)
- {
- if (root == NULL)
- return -1;
- int dist = -1;
- if ((root->data == x) ||
- (dist = findDistance(root->left, x)) >= 0 ||
- (dist = findDistance(root->right, x)) >= 0)
- return dist + 1;
- return dist;
- }
- int main()
- {
- BST s;
- int nodes = 0;
- int findNode = 0;
- int N = 0;
- std::cin >> N;
- int K = 0;
- std::cin >> K;
- for (int i = 0; i < N; i++) {
- std::cin >> nodes;
- s.insert(nodes);
- }
- for (int i = 0; i < K; i++)
- {
- std::cin >> findNode;
- }
- for (int i = 0; i < K; i++)
- {
- std::cout << findDistance(, findNode) << std::endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement