C 在BST中搜索一个元素
如果在bst中找到或未找到某个值,我希望打印“找到”或“未找到”,但此代码不打印任何内容。我在编译时没有收到错误或警告。我无法调试它,因为调试DEV时C++突然关闭。调试另一个代码时,我没有遇到这样的问题。在函数SearchBstNodePtr root中,int data与NULL比较时,您只放置了“=”符号,而不是“=”C 在BST中搜索一个元素,c,C,如果在bst中找到或未找到某个值,我希望打印“找到”或“未找到”,但此代码不打印任何内容。我在编译时没有收到错误或警告。我无法调试它,因为调试DEV时C++突然关闭。调试另一个代码时,我没有遇到这样的问题。在函数SearchBstNodePtr root中,int data与NULL比较时,您只放置了“=”符号,而不是“=” #include <stdio.h> #include <stdlib.h> typedef struct BstNode { int d
#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);
}
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);
}