二叉搜索树的建立与父亲节点的查询

#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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值