博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉查找树的建立,插入,删除例程
阅读量:6225 次
发布时间:2019-06-21

本文共 2898 字,大约阅读时间需要 9 分钟。

1 #include 
2 #include
3 4 typedef struct TreeNode{ 5 int value; 6 struct TreeNode* Left; 7 struct TreeNode* Right; 8 }TreeNode; 9 10 void printTree(TreeNode* T, int depth); 11 12 TreeNode *Insert(TreeNode* T, int val) 13 { 14 if (!T) 15 { 16 TreeNode * T = (TreeNode*)malloc(sizeof(TreeNode)); 17 //int val; 18 if (T == NULL) 19 { 20 printf("out of space!!!\n"); 21 return NULL; 22 } 23 T->value = val; 24 T->Left = T->Right = NULL; 25 return T; 26 } 27 else 28 29 if (val < T->value) 30 T->Left = Insert(T->Left, val); 31 else if (val > T->value) 32 T->Right = Insert(T->Right, val); 33 return T; 34 35 36 37 38 39 } 40 41 void InOrderTraversal(TreeNode* T, int depth) 42 { 43 if (T) 44 { 45 InOrderTraversal(T->Left, depth + 1); 46 printTree(T, depth); 47 InOrderTraversal(T->Right, depth + 1); 48 } 49 } 50 51 void printTree(TreeNode* T, int depth) 52 { 53 while (depth--) 54 printf(" "); 55 printf("%d\n", T->value); 56 } 57 58 TreeNode* FinMin(TreeNode* T) 59 { 60 61 if (T == NULL) 62 { 63 printf("the tree is empty!\n"); 64 return NULL; 65 } 66 while (T->Left) 67 T = T->Left; 68 return T; 69 } 70 71 TreeNode *Delete(TreeNode *T, int val) 72 { 73 TreeNode * temp; 74 if (T == NULL) 75 { 76 printf("The tree is empty!!!\n"); 77 return NULL; 78 } 79 else 80 if (val > T->value) 81 T->Right = Delete(T->Right, val); 82 else 83 if (val < T->value) 84 T->Left = Delete(T->Left, val); 85 else if (T->Left &&T->Right) 86 { 87 temp = FinMin(T -> Right); 88 T->value = temp->value; 89 T->Right = Delete(T->Right, temp->value); 90 } 91 else 92 { 93 temp = T; 94 if (!T->Left) 95 T = T->Right; 96 else 97 98 if (!T->Right) 99 T = T->Left;100 free(temp);101 102 }103 return T;104 }105 106 int main()107 {108 TreeNode *T = NULL;109 TreeNode *T2 = NULL;110 int val;111 /*scanf_s("%d", &val);112 T->value = val;*/113 //T->Left = T->Right = NULL;114 for (int i = 0; i < 6; i++)115 {116 scanf_s("%d", &val);117 T = Insert(T, val);118 }119 InOrderTraversal(T, 0);120 printf("After Insertintg:\n");121 //scanf_s("%d", &val);122 T = Insert(T, 5);123 124 InOrderTraversal(T, 0);125 126 T2 = FinMin(T);127 printf("\n%d\n", T2->value);128 129 printf("\nAfter deleting:\n");130 Delete(T, 6);131 InOrderTraversal(T, 0);132 133 return 0;134 }

 

转载于:https://www.cnblogs.com/hi3254014978/p/9520812.html

你可能感兴趣的文章
《UX最佳实践:提高用户体验影响力的艺术 》一3.3 工作流程中各个角色的密切配合使用户体验达到更好效果...
查看>>
西数打造面向数据中心的Gold产品组合
查看>>
俄公司将为“物联网”部署约200颗卫星
查看>>
《大数据原理:复杂信息的准备、共享和分析》一一2.8 去标识化
查看>>
SAP 助力医疗器械中小企业营业增收30%
查看>>
如何规划基于Docker的微服务?
查看>>
ICLR 2017开幕前夕,雷锋网来到土伦带你实地探营 | ICLR 2017
查看>>
从物联网到智能制造 行业巨擘联合抢占先机!
查看>>
最高检推动检察业务大数据实践深入发展
查看>>
热门拍照应用Prisma前途未卜:融资还是被收购?
查看>>
Vestas 利用IBM大数据提升风电运营
查看>>
5G时代,中国将彻底终结美国霸权!wifi和互联网也面临消失!
查看>>
人工智能技术将助力改善移动安全
查看>>
WPS Office Linux版本一年未更新:已中止开发
查看>>
云计算性能常见问题:云计算何处何从?
查看>>
优秀OA系统的五大特性
查看>>
线路愈加明晰?万达牵手IBM进军公有云业务
查看>>
【转】Zookeeper-Watcher机制与异步调用原理
查看>>
纽约州推出“被遗忘权”提案 用户或能要求将个人隐私信息从搜索结果中移
查看>>
降低测试难度及成本 加速物联网普及
查看>>