Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在BST中搜索一个元素_C - Fatal编程技术网

C 在BST中搜索一个元素

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

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

在函数SearchBstNodePtr root中,int data与NULL比较时,您只放置了“=”符号,而不是“=”

#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);
}