Check if given sorted subsequence exits in the Binary Search Tree or Not
Sat Dec 09 2023 17:44:36 GMT+0000 (Coordinated Universal Time)
Saved by
@AtulPatil
#include <bits/stdc++.h>
using namespace std;
// tree node is defined
class TreeNode {
public:
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int data)
{
val = data;
left = NULL;
right = NULL;
}
};
// inorder traversal to check if the given
// sorted subsequence exists in the BST
void DoesSeqExistRec(TreeNode* root, vector<int> sequence, int& index)
{
//base case
if (!root)
return;
// traverse left subtree first as it's inorder traversal
DoesSeqExistRec(root->left, sequence, index);
// If current node matches with current sequence
// element(sequence[index]) then move
// to the next element in the sequenece
if (root->val == sequence[index])
index++;
// traverse right subtree
DoesSeqExistRec(root->right, sequence, index);
}
// function to check whether the sequence exists or not
bool DoesSeqExist(TreeNode* root, vector<int> sequence)
{
int index = 0;
// recursive function to check if all elements
// of the sequence are in the BST or not
DoesSeqExistRec(root, sequence, index);
//if after the inorder traversal as we have discussed,
//index reaches towards the end
//then the BST contains the sequence other wise not
if (index == sequence.size())
return true;
else
return false;
}
int main()
{
TreeNode* root = new TreeNode(16);
root->left = new TreeNode(3);
root->left->right = new TreeNode(13);
root->left->right->left = new TreeNode(10);
root->left->right->left->left = new TreeNode(7);
root->right = new TreeNode(20);
root->right->left = new TreeNode(18);
vector<int> sequence1{ 7, 13, 18, 20 };
if (DoesSeqExist(root, sequence1))
cout << "Yes the sequence exists in the binary search tree\n";
else
cout << "No, the sequence exists in the binary search tree";
vector<int> sequence2{ 7, 13, 14, 20 };
if (DoesSeqExist(root, sequence2))
cout << "Yes the sequence exists in the binary search tree\n";
else
cout << "No, the sequence doesn't exist in the binary search tree";
return 0;
}
content_copyCOPY
https://www.includehelp.com/data-structure-tutorial/check-if-given-sorted-subsequence-exits-in-the-binary-search-tree-or-not.aspx
Comments