第一题: vector<vector<int> > invert_tree(int** node_data_list, int node_data_listRowLen, int* node_data_listColLen) { int n = node_data_listRowLen; int root = 0; vector<vector<int> > tree(n+1, vector<int>()); vector<vector<int> > ans; for(int i = 0; i < n; i++) { int id = node_data_list[i][0]; int p = node_data_list[i][1]; if(p == 0) root = id; else tree[p].push_back(id); } for(int i = 1; i <= n; i++) { reverse(tree[i].begin(), tree[i].end()); } ans.push_back({root,0}); dfs(root, 0, tree, ans); return ans; } void dfs(int root, int parent, vector<vector<int> >& tree, vector<vector<int> >& ans) { for(int i = 0; i < tree[root].size(); i++) { ans.push_back({tree[root][i], root}); dfs(tree[root][i], root, tree, ans); } } 详细参考:
点赞 评论

相关推荐

09-19 12:15
门头沟学院 Java
迷茫的大四🐶:这下是真的打牌了,我可以用感谢信和佬一起打牌吗
点赞 评论 收藏
分享
10-10 16:30
济宁学院 Java
不想做程序员:面试官:蓝桥杯三等奖?你多去两次厕所都能拿二等吧
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务