AC

 •  1个月前


#include <bits/stdc++.h>
using namespace std;


struct Node {
	int value;
	int left;
	int right;
} ;
vector<int> arr;
vector<Node> nodes;
//连接树
void midfind(int root) {
	if (root == 0) {
		return;
	}//判空
	midfind(nodes[root].left);//访问左子树
	arr.push_back(root);
	midfind(nodes[root].right);//访问右子树
}

int main() {
	int n, x;
	cin >> n >> x;


	nodes.resize(n + 1);//使nodes大小为n+1
	vector<bool> noch(n + 1, 0);

	for (int i = 1; i <= n; i++) {
		cin >> nodes[i].value >> nodes[i].left >> nodes[i].right;

		if (nodes[i].left != 0) {
			noch[nodes[i].left] = 1;
		}
		if (nodes[i].right != 0) {
			noch[nodes[i].right] = 1;
		}
	}
	//找根
	int root = 0;
	for (int i = 1; i <= n; i++) {
		if (!noch[i]) {
			root = i;
			break;
		}
	}
	//中序
	midfind(root);
	for (int i = 0; i < arr.size(); i++) {
		if (nodes[arr[i]].value == x) {
			cout << i + 1 << endl;
			break;
		}
	}

	return 0;
}

评论:

请先登录,才能进行评论