求助 样例过了 但是WA
查看原帖
求助 样例过了 但是WA
255850
ebubu楼主2020/10/18 18:56
#include<iostream>
using namespace std;
int target, all = 0, mmin, mmax; int k = 0,b=0;
const int INF = 0x7fffffff;
struct TNode
{
	int data;
	TNode* left;
	TNode* right;
};
TNode* root=NULL;

void insert(int a)
{
	TNode* temp = new TNode,*idx;
	temp->data = a;
	temp->left = NULL;
	temp->right = NULL;
	if (root == NULL)
	{
		root = temp;
		return;
	}
	idx = root;
	while (1)
	{
		if (a <= idx->data)
		{
			if (idx->left == NULL)
			{
				idx->left = temp;
				return;
			}
			idx = idx->left;
		}
		else
		{
			if (idx->right == NULL)
			{
				idx->right = temp;
				return;
			}
			idx = idx->right;
		}
	}
}

void middleorder_1(TNode* now)
{
	if (now!= NULL)
	{
		middleorder_1(now->left);
		all++;
		if (now->data == target)
		{
			cout << all << endl;
			return;
		}
		middleorder_1(now->right);
	}
}

void middleorder_2(TNode* now)
{
	if (now != NULL)
	{
		middleorder_2(now->left);
		all++;
		if (all == target)
		{
			cout << now->data << endl;
			return;
		}
		middleorder_2(now->right);
	}
}

void middleorder_3(TNode* now)
{
	if (now != NULL)
	{
		middleorder_3(now->left);
		if (now->data==target)
		{
			cout << mmin << endl;
			return;
		}
		mmin = now->data;
		middleorder_3(now->right);
	}
	
}

void middleorder_4(TNode* now)
{
	if (now != NULL)
	{
		middleorder_4(now->left);
		if (k)
		{
			cout << now->data << endl;
			k = 0;
			b = 1;
		}
		if (now->data == target)
			k = 1;
		middleorder_4(now->right);
	}
}
int main()
{
	int m,select;
	cin >> m;
	while (m)
	{
		all = 0; mmin = -INF; mmax = INF; k = 0; b = 0;
		cin >> select>>target;
		switch (select)
		{
		case 1:
			middleorder_1(root);
			break;
		case 2:
			middleorder_2(root);
			break;
		case 3:
			middleorder_3(root);
			break;
		case 4:
			middleorder_4(root);
			if (!b)
				cout << mmax << endl;
			break;
		case 5:
			insert(target);
			break;
		}
		m--;
	}
}
2020/10/18 18:56
加载中...