当前位置: 首页 > 知识库问答 >
问题:

为什么这么讨厌的二叉搜索树(bst)seg。错误?

阚小云
2023-03-14

输入元素的数量,二叉搜索树的元素,输入要显示的所有子树的元素

#include <stdio.h>

bst结构节点的定义

typedef struct node
{
int info;
struct node *right, *left;
}NODE; 

插入fn,节点在叶

struct node* insertBst(struct node* root, int ele)
{

if(root == NULL)
{
    NODE* temp = (NODE*)malloc(sizeof(NODE));
    temp -> info = ele;
    temp -> right = temp -> left = NULL;
    return root;
}

else if(ele > root -> info)
{
    root -> right = insertBst(root -> right, ele);
}

else if(ele < root -> info)
{
    root -> left = insertBst(root -> left, ele);
}


}

搜索eel的地址

NODE* search(int ele, NODE* root)
{
if( root == NULL) return NULL;
if(ele > root -> info)
{
    return search(ele, root -> right); 
}

else if( ele < root -> info)
{
    return search(ele, root -> left);
}

else if(ele == root -> info) //ele found
{
    return root;
}

 }

使用预设顺序显示制作的bst:根、左、右

void preorder(NODE* root)
{
   if(root)
{
    printf("%d ", root -> info);
    preorder(root -> left);
    preorder(root -> right);
 }
}

调用insert来创建bst的驱动程序,节点的子树为im

int main()
{
int n, ele; //no. of elements in bst
NODE* root = NULL;
printf("no. of bst elements");
scanf("%d", &n);
printf("elements to be inserted in bst");
for(int i = 0; i < n; ++i)
{
    scanf("%d", &ele);
    NODE* t = insertBst(root, ele);
}

printf("element whose subtree needs to be displayed");
scanf("%d", ele); //elements whose subtree is to be diplayed
NODE *temp;
temp = search(ele, root);
preorder(temp);
}

共有1个答案

韩照
2023-03-14

很可能是断层造成的:

scanf(“%d”,ele)

您应该在其中传递ele的地址而不是它的值,就像您在for循环中所做的那样。

此外,您的程序将无法工作,因为函数insertBst永远不会像任何时候那样分配根节点如果(root==NULL)为真(总是),您将按您应该的方式分配节点,但返回相同的root,仍然是NULL。您可能打算返回temp

此外,在取消引用之前,最好先检查temp(在malloc之后)是否有NULL指针,因为malloc可能会失败并返回NULL,取消引用它会使程序崩溃。

 类似资料:
  • 编写一个函数,如果给定的二叉搜索树包含给定的值,则返回1,否则返回0。 例如,对于以下树: N1(值:1,左:null,右:null) n2(值:2,左:n1,右:n3) N3(值:3,左:null,右:null) 对contains(&n2,3)的调用应返回1,因为根位于n2的树包含编号3。 函数应该返回1,然而,它返回0或者根本不返回。

  • 这里有问题 二叉搜索树(BST)是一种二叉树,其中每个节点的值大于或等于该节点左子树中所有节点的值,而小于该节点右子树中所有节点的值。 编写一个函数,根据使用的时间有效地检查给定的二叉搜索树是否包含给定的值。

  • 二叉树 : 闲话少说,直接上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>BST</title> </head> <body> <script> //结点 function Node(data,left,right){ this.data=data; t

  • 我写了一个函数,如果给定的二叉树是二叉搜索树,则返回true,否则返回false。 我的功能对吗?

  • 我很难按我教授想要的格式打印出一个二叉搜索树。 他的格式是这样的: 我的代码:

  • 主要内容:二叉树的性质,满二叉树,完全二叉树,总结通过《 树的存储结构》一节的学习,我们了解了一些树存储结构的基本知识。本节将给大家介绍一类具体的树结构—— 二叉树。 简单地理解,满足以下两个条件的树就是二叉树: 本身是有序树; 树中包含的各个节点的度不能超过 2,即只能是 0、1 或者 2; 例如,图 1a) 就是一棵二叉树,而图 1b) 则不是。 图 1 二叉树示意图 二叉树的性质 经过前人的总结,二叉树具有以下几个性质: 二叉树中,第 i