c-如何比较二进制搜索树的两个字符串



我试图比较两个字符串,看看它作为叶节点从根到第四个应该去哪里。我一直在尝试使用字符串比较,结果出现了一个错误。我对c中的二叉树非常不熟悉,需要帮助插入节点。

这是我迄今为止的代码,它给了我一个错误:

#include <stdio.h>
#include <stdlib.h>
#define MAXLEN 15
typedef struct treeNode{
  char string[MAXLEN+1];
  struct treeNode *left;
  struct treNode *right;
}treeNode;
treeNode * insert(treeNode *node, char s[MAXLEN+1]){
  if(node == NULL){
    treeNode *temp;
    temp = (treeNode *)malloc(sizeof(treeNode));
    strncpy(temp -> string, s, sizeof(treeNode));
    temp -> left = NULL;
    temp -> right = NULL;
    return temp;
  }
  else-if(strcmp(node->string,char s)>0){
  }
}

您的程序现在有三个问题:

  1. "else-if"应该是"else-if"

  2. strcmp(node->string,char s)应该是strcmp

  3. 无主要方法

首先我认为你应该更改

strcmp(node->string,char s);

并将其替换为

strcmp(node->string,s);

在strcmp中,如果结果大于零,则第一个参数大于第二个参数。

因此,如果if-else语句的求值结果为true,则node->string大于s。

如果strcmp小于零,则第二个参数大于第一个值。

最新更新