❤ • 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;
}
评论:
请先登录,才能进行评论