文章

5

粉丝

153

获赞

0

访问

4.1k

头像
二叉树,不过父节点是孩子,两个子节点是父母
P1315 浙江大学机试题
发布于2023年6月24日 10:51
阅读数 913

用map实现二叉树,使用索引,而不是用指针,这样代码看着比较简洁。但是map是基于红黑树做的,可能相比于直接用指针操作效率会稍微有点影响。
#include <iostream>
#include <map>
#include <string>

using namespace std;

struct Parents {
    char p1;
    char p2;
};

map<char, Parents> tree;

string findRelation(char child, char parent, string relation = "") {
    if (tree.count(child) == 0) {
        return "-";
    }

    Parents parents = tree[child];
    if (parents.p1 == parent || parents.p2 == parent) {
        return relation.empty() ? "parent" : relation;
    }

    string relation1 = findRelation(parents.p1, parent, relation.empty() ? "grandparent" : "great-" + relation);
    if (relation1 != "-") {
        return relation1;
    }

    string relation2 = findRelation(parents.p2, parent, relation.empty() ? "grandparent" : "great-" + relation);
    if (relation2 != "-") {
        return relation2;
    }

    return "-";
}

string findChildRelation(char parent, char child, string relati...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发