objecttive-C语言使用二叉排序树实现查找、插入、删除、查看元素
来源:互联网 发布:绿岸网络 编辑:程序博客网 时间:2024/06/06 03:43
#import <Foundation/Foundation.h>typedef struct BSTree { int value; struct BSTree *left; struct BSTree *right; }BSTree;@interface BinaryTree : NSObject{}+(BSTree*) binaryTree_create : (int) value; /*这是建立二叉排序树的函数*/+(BSTree*) binaryTree_search : (BSTree*) node : (int) value; /*这是查找二叉排序树的函数*/+(BSTree*) binaryTree_insert : (BSTree*) node : (int) value; /*这是实现二叉排序树插入的函数*/+(void) binaryTree_print : (BSTree*) node; /*这是将二叉排序树元素打印出来的函数*/+(BSTree*) binaryTree_min : (BSTree*) node; /*这是求二叉排序树中最小元素的函数*/+(BSTree*) binaryTree_delete : (BSTree*) node : (int) value; /*这是删除二叉排序树中元素的函数*/@end@implementation BinaryTree+(BSTree*) binaryTree_create : (int) value{ BSTree *node=(BSTree *)malloc(sizeof(BSTree)); node->value=value; node->left=NULL; node->right=NULL; return node;}+(BSTree*) binaryTree_search : (BSTree*) node : (int) value{ BSTree *temp_node=node; if(temp_node==NULL) { NSLog(@"Value cannot be found!"); return NULL; } else if(value < temp_node->value) { return [BinaryTree binaryTree_search : temp_node->left : value]; } else if(value > temp_node->value) { return [BinaryTree binaryTree_search : temp_node->right : value]; } else { return temp_node; }}+(BSTree*) binaryTree_insert : (BSTree*) node : (int) value{ if(node==NULL) { node=[BinaryTree binaryTree_create : value]; } else if(value < node->value) { node->left=[BinaryTree binaryTree_insert : node->left : value]; } else { node->right=[BinaryTree binaryTree_insert : node->right : value]; } return node;}+(void) binaryTree_print : (BSTree*) node{ if(node != NULL) { NSLog(@"%d",node->value); if(node->left!=NULL) { [BinaryTree binaryTree_print : node->left]; } if(node->right!=NULL) { [BinaryTree binaryTree_print : node->right]; } }}+(BSTree*) binaryTree_min : (BSTree*) node{ if(node==NULL) return NULL; else if(node->left==NULL) return node; return [BinaryTree binaryTree_min : node->left];}+(BSTree*) binaryTree_delete : (BSTree*) node : (int) value{ BSTree *temp_node=node; if(temp_node==NULL) { NSLog(@"Value cannot be found!"); } else if(value < node->value) { node->left=[BinaryTree binaryTree_delete : node->left : value]; } else if(value > node->value) { node->right=[BinaryTree binaryTree_delete : node->right : value]; } else if(node->right != NULL && node->left != NULL) { temp_node=[BinaryTree binaryTree_min : node->right]; node->value=temp_node->value; node->right=[BinaryTree binaryTree_delete : node->right : node->value]; } else { temp_node=node; if(node->left==NULL) node=node->right; else if(node->right==NULL) node=node->left; free(temp_node); } return node;}@endint main(int argc,const char *argv[]){ BSTree *node=NULL; BSTree *temp_node=NULL; int value; int count; int option=1; while(option!=0) { NSLog(@"\nYour choice :\n1-> Search\n2-> Insert\n3-> Delete\n4-> Display\n5-> Quit\n\n"); scanf("%d",&option); switch(option) { case 1: if(node==NULL) NSLog(@"\nThe tree is empty.\n\n"); else { NSLog(@"\nInput a number :\n"); scanf("%d",&value); temp_node=[BinaryTree binaryTree_search : node : value]; if(temp_node != NULL) NSLog(@"\n%d is in the Tree.\n",value); else NSLog(@"\n%d is not in the Tree.\n",value); } break; case 2: NSLog(@"\nInput the number of array :\n"); scanf("%d",&count); while(count>0) { scanf("%d",&value); node=[BinaryTree binaryTree_insert : node : value]; count--; } break; case 3: NSLog(@"\nInput the number you want to delete :\n"); scanf("%d",&value); if(node==NULL) NSLog(@"\nThe tree is empty.\n"); else { temp_node=[BinaryTree binaryTree_search : node : value]; if(temp_node==NULL) NSLog(@"\n%d is not in the Tree.\n",value); else { node=[BinaryTree binaryTree_delete : node : value]; NSLog(@"\n%d is successfully deleted.\n",value); } } break; case 4: if(node==NULL) NSLog(@"\nThe tree is empty.\n"); else [BinaryTree binaryTree_print : node]; break; case 5: option=0; } } return 0;}
0 0
- objecttive-C语言使用二叉排序树实现查找、插入、删除、查看元素
- 二叉排序树(新建,插入,查找,删除)(C语言编写)
- Java实现二叉排序树的插入、查找、删除
- JAVA实现 二叉排序树查找,插入,删除
- 二叉排序树查找、插入、删除
- 二叉查找树(二叉排序树)创建、插入、删除、查找-C语言
- 二叉排序树的构造、查找、插入及删除算法的实现(C++)
- 二叉排序树的查找、删除、插入
- 二叉排序树(插入、删除、查找)
- 二叉排序树_插入+删除+查找
- 二叉排序树的插入,查找,删除
- 二叉排序树的查找-插入-删除
- 二叉排序树的插入、查找、删除、遍历(C语言版)
- C语言顺序表的插入、删除、查找操作实现
- C语言实现顺序表的初始化,插入,删除,查找
- java实现二叉排序树的建立,查找,插入,删除
- C++实现二叉排序树BSTree --插入删除摧毁查找等操作
- c语言心得-----数组中对元素的操作排序,查找,插入,和删除
- 如何用Linux命令行管理网络:11个你必须知道的命令
- 灿和游戏笔试试题
- 研究生导师的话
- hdu 1050 Moving Tables_贪心
- Selenium测试Ajax程序
- objecttive-C语言使用二叉排序树实现查找、插入、删除、查看元素
- c语言编辑时候有哪些小技巧呢?
- 黑马程序员 银行业务调度系统
- JSP的复习总结
- mysql 将一个字符串按某个字符串出现的最后一次位置来拆分成两个字符串
- 菜鸟之旅——Java入门篇(七)异常处理
- 约瑟夫问题
- 黑马程序员—高新之javaBean总结
- 数据库统计学生成绩