gpt4 book ai didi

C 在 BST 中搜索元素

转载 作者:行者123 更新时间:2023-11-30 14:34:55 24 4
gpt4 key购买 nike

#include <stdio.h>
#include <stdlib.h>

typedef struct BstNode {
int data;
struct BstNode* left;
struct BstNode* right;
} BstNode;

typedef BstNode* BstNodePtr;
typedef BstNode** BstNodePtrPtr;

void Insert(BstNodePtrPtr root, int data);
BstNodePtr createNewNode(int data);
int Search(BstNodePtr root, int data);

void main() {
BstNodePtr root = NULL;
Insert(&root, 15);
Insert(&root, 10);
Insert(&root, 20);

if( Search(root, 15) ) {
printf("%s", "Found");
} else {
printf("%s", "Not found");
}
}

BstNodePtr createNewNode(int data) {
BstNodePtr newNode = malloc(sizeof(BstNode));
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}

void Insert(BstNodePtrPtr root, int data) {
if((*root) == NULL) {
(*root) = createNewNode(data);
}
else if (data <= (*root)->data) {
Insert(&((*root)->left), data);
}
else {
Insert(&((*root)->right), data);
}
}

int Search(BstNodePtr root, int data) {
if(root = NULL) return 0;
else if(root->data == data) return 1;
else if(data <= root->data) return Search(root->left, data);
else return Search(root->right, data);
}

如果在 bst 中找到或未找到某个值,我想打印“找到”或“未找到”,但此代码不打印任何内容。编译时我没有收到错误或警告。我无法调试它,因为在调试 dev c++ 时突然关闭。我在调试另一个代码时没有遇到这样的问题。

最佳答案

在函数 Search(BstNodePtr root, int data) 中,与 NULL 进行比较时,您仅放置了“=”符号而不是“==”

int Search(BstNodePtr root, int data) {
if(root == NULL) return 0;
else if(root->data == data) return 1;
else if(data <= root->data) return Search(root->left, data);
else return Search(root->right, data);
}

关于C 在 BST 中搜索元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58782271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com