二叉查找树
来源:互联网 发布:矩阵与转置矩阵相乘 编辑:程序博客网 时间:2024/05/21 19:37
题目:二叉查找树结构为:
typedef struct BSTree
{
struct BSTree *left, *right;
int item;
} BSTree;
实现以下操作:
1) 创建一个新的 BST 结点。
2) 在 BST 中查找一个指定的元素。
typedef struct BSTree
{
struct BSTree *left, *right;
int item;
} BSTree;
实现以下操作:
1) 创建一个新的 BST 结点。
2) 在 BST 中查找一个指定的元素。
3) 向 BST 中插入元素。
代码:
#include <stdio.h>#include <stdlib.h>typedef struct BSTree { struct BSTree *left, *right; int item; } BSTree, *BSTreePtr; BSTreePtr insert(BSTreePtr root,int data){BSTreePtr ptr = root;BSTreePtr tempnode;BSTreePtr newnode = (BSTreePtr)malloc(sizeof(BSTree));newnode->item = data;newnode->left = NULL;newnode->right = NULL;if(!ptr)return newnode;while (ptr){tempnode = ptr;if (data <= ptr->item)ptr = ptr->left;elseptr = ptr->right;}if (data <= tempnode->item)tempnode->left = newnode;elsetempnode->right = newnode;return root;}BSTreePtr creatTree(void){int data;BSTreePtr root = NULL;printf("请输入要插入的结点:(以0作为结束)\n");scanf("%d",&data);while (data){root = insert(root,data);scanf("%d",&data);}return root;}int find(BSTreePtr root,int m){BSTreePtr ptr = root;if (!ptr)return 0;while (ptr){if (m == ptr->item)return 1;else if (m < ptr->item)ptr = ptr->left;elseptr = ptr->right;}return 0;}int main(void){int m,res;BSTreePtr root = NULL;root = creatTree();printf("请输入想查找的元素:\n");scanf("%d",&m);res = find(root,m);if (res)printf("找到元素%d\n",m);elseprintf("没找到元素%d\n",m);return 0;}
通过这次的编程题是我受益匪浅,让我能更深入的理解指针操作和指针变量的赋值,比如你想改变某一指针变量最好是通过其地址进行操作,必要时还要用到二级指针,因为单纯变量的改变是局部的,而地址中的变量的改变是全局的。
0 0
- 查找--二叉查找树
- 二叉树、二叉查找树
- 二叉树 & 二叉查找树
- 【查找结构】二叉查找树
- 查找之二叉树查找
- 查找之二叉树查找
- 查找:二叉查找树总结
- 二叉树查找树...
- 二叉树查找树
- 查找--遍历二叉树
- 二叉查找树
- 二叉查找树实现
- 二叉查找树
- 动态二叉查找树
- 最优二叉查找树
- 二叉查找树
- 二叉查找树
- 平衡二叉查找树
- js中的map
- listview android:cacheColorHint,android:listSelector属性作用
- object-C 与 C++的比较
- HTTP协议详解
- Android学习第一天-adb常用命令
- 二叉查找树
- C语言指针的应用
- 卸载vs后,arcgis server重装失败解决办法
- JAVA笔记【20131230】
- 干扰素诱生剂
- 深度学习(卷积神经网络)一些问题总结
- KEEP CACHE和并行查询简单使用
- 计算机之父图灵获英女王赦免
- 铁路总公司称访问量剧增致12306瘫痪