#include <iostream>
#include <algorithm>
#define FAST ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define LL long long
using namespace std;
const int N = 1e6 + 10;
int num[N],n;
typedef struct TreeNode{
int val;
TreeNode *LChild,*RChild;
}BSTNode,*BSTree;
void Insert_Node(BSTree *root,int val)
{
BSTree s = NULL;
if(*root == NULL)
{
s = new BSTNode;
s->val = val;
s->LChild = NULL,s->RChild = NULL;
*root = s;
}
else if(val < (*root)->val)
{
Insert_Node(&(*root)->LChild,val);
}
else if(val > (*root)->val)
{
Insert_Node(&(*root)->RChild,val);
}
}
void CreateBST(BSTree *root)
{
*root = NULL;
for(int i = 1;i <= n;i++)
{
Insert_Node(root,num[i]);
}
}
int flag = 1;
void Travel(BSTree root,int x)
{
if(root != NULL && flag == 1)
{
if(root->LChild != NULL)
{
if(root->LChild->val == x)
{
flag = 0;
cout << root->val << endl;
return ;
}
}
if(root->RChild != NULL)
{
if(root->RChild->val == x)
{
flag = 0;
cout << root->val << endl;
return ;
}
}
Travel(root->LChild,x);
Travel(root->RChild,x);
}
}
int main(void)
{
cin >> n;
for(int i = 1;i <= n;i++)
{
cin >> num[i];
}
BSTree root;
CreateBST(&root);
int x;
cin >> x;
if(root->val == x) cout << "It doesn't have parent." << endl;
else
{
Travel(root,x);
if(flag == 1)
{
cout << "It does not exist." << endl;
}
}
return 0;
}
二叉搜索树的建立与父亲节点的查询
最新推荐文章于 2023-11-13 17:21:55 发布