首页 > 代码库 > Sicily 1156. Binary tree
Sicily 1156. Binary tree
题目地址:1156. Binary tree
思路:
如何愉快地前序输出呢,要在存储数据的时候根据位置来存放数据!
一开始被自己蠢哭,一直以为第一个输入的就是根结点(例子的祸害呀啊啊啊!!!!),结果证明不是的,所以呢,我们要找出根结点,那么怎么找根结点呢,我用了一个向量来存储下标值,遍历向量值,把节点的左右值作为下标的那个数据设为非根结点,然后剩下的那个就是根节点了。
具体代码如下:
1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 5 struct Store{ 6 char node; 7 int left; 8 int right; 9 bool is_root;10 }store[1001];11 12 void print(int x) {13 if (x == 0) return;14 cout << store[x].node;15 print(store[x].left);16 print(store[x].right);17 }18 int main() {19 int t;20 while (cin >> t) {21 int index;22 vector<int> store_index;23 for (int i = 0; i < t; i++) {24 cin >> index;25 cin >> store[index].node >> store[index].left26 >> store[index].right;27 store[index].is_root = true;28 store_index.push_back(index);29 }30 for (int i = 0; i < t; i++) {31 int left = store[store_index[i]].left;32 int right = store[store_index[i]].right;33 store[left].is_root = false;34 store[right].is_root = false;35 }36 int root_node;37 for (int i = 0; i < t; i++) {38 if (store[store_index[i]].is_root == true) {39 root_node = store_index[i];40 break;41 }42 }43 print(root_node);44 cout << endl;45 }46 47 return 0;48 }
Sicily 1156. Binary tree
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。