【发布时间】:2021-08-01 02:26:52
【问题描述】:
抱歉英语不好。 我正在使用 C++ 中的链表创建一个二叉树项目。我试图制作一个布尔方法来检查 2 个节点是否相邻? 我正在尝试使用递归方法,因为我正在使用链表来执行此操作,但似乎我做错了。
这是我声明节点的方式
Struct Node{
string name;
int data;
Node *right, *left;
}
这是我声明检查功能的方式:
bool checkadjacent(node* Node, string& u, string& v) {
if(!Node){
return false;
}
if (Node && Node->right) {
string current = Node->name;
string right = Node->right->name;
if (current == u && right == v)
return true;
else if (current == v && right == u)
return true;
}
if (Node && Node->left) {
string current = Node->name;
string left = Node->left->name;
if (current == u && left == v)
return true;
else if (current == v && left == u)
return true;
}
if (Node->left){
if(checkadjacent(Node->left, u, v)){
return true;
}
}
if (Node->right){
if(checkadjacent(Node->right, u, v)){
return true;
}
}
}
【问题讨论】:
-
二叉树中的相邻是什么意思?亲子关系?如果是这种情况,只需检查一个是否是另一个的孩子。以及如何只使用一个链表来表示一棵二叉树?
标签: c++ algorithm data-structures boolean binary-search-tree