如何解决如何在非变体二叉树中搜索给定节点的父节点?
我有用于搜索二叉树中的节点的代码。如何找到其KEY
作为参数提供的Node的父节点?
struct Tree* search(struct Tree *root,int KEY)
{
struct Tree *temp;
if(root == NULL) return NULL; //Base condition
else
{
if(root-> data == KEY) return root;
else
{
temp = search(root-> Lchild,KEY);
if(temp != NULL) return temp;
else return(search(root-> Rchild,KEY));
}
}
return NULL;
}
解决方法
您将返回其值与Tree
匹配的KEY
节点的地址,而不是其父节点。假设所有节点值在该树中都是不同的,那么如果父节点Tree
的子节点值(左或右子节点)与KEY
匹配,则必须遵循以下代码返回父节点struct Tree* search(struct Tree *root,int KEY){
if(root == NULL){
return NULL;
}
if(root->Lchild != NULL && root->Lchild->data == KEY){
return root;
}
if(root->Rchild != NULL && root->Rchild->data == KEY){
return root;
}
struct Tree *left = search(root->Lchild,KEY);
struct Tree *right = search(root->Rchild,KEY);
if(left != NULL){
return left;
}else if(right != NULL){
return right;
}
return NULL;
}
。
{{1}}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。