输入元素的数量,二叉搜索树的元素,输入要显示的所有子树的元素
#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);
}
很可能是断层造成的:
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