码迷,mamicode.com
首页 > 其他好文 > 详细

8.3树表的查找

时间:2016-08-01 01:48:17      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

二叉排序树上的删除

 

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 typedef int KeyType;//关键字
 5 typedef int DataType;//其他数据域
 6 
 7 struct node
 8 {
 9     KeyType key;//关键字
10     DataType other;//其他数据域
11     struct node *lchild, *rchild;//左右子树指针
12 };
13 typedef struct node BSTNode;//结点类型
14 
15 BSTNode *Deletebst(BSTNode *T, KeyType x);//查找需要删除的结点
16 BSTNode *Delete(BSTNode *T);//删除结点
17 
18 void main()
19 {
20 
21 }
22 
23 BSTNode *Deletebst(BSTNode *T, KeyType x)//查找需要删除的结点
24 {
25     if (!T)//找不到
26     {
27         return NULL;
28     }
29     else
30     {
31         if (T->key == x)
32         {
33             return Delete(T);
34         }
35         else if (T->key > x)
36         {
37             return Deletebst(T->lchild, x);
38         }
39         else
40         {
41             return Deletebst(T->rchild, x);
42         }
43     }
44 }
45 
46 BSTNode *Delete(BSTNode *T)//删除结点
47 {
48     BSTNode *q, *s;
49 
50     if (T->rchild == NULL)
51     {
52         q = T;
53         T = T->lchild;
54         free(q);
55     }
56     else if (T->lchild == NULL)
57     {
58         {
59             q = T;
60             T = T->rchild;
61             free(q);
62         }
63     }
64     else
65     {
66         q = T;
67         s = T->lchild;
68         while (s->rchild)
69         {
70             q = s;
71             s = s->rchild;
72         }
73         T->key = s->key;
74 
75         if (q != T)
76         {
77             q->rchild = s->lchild;
78         }
79         else
80         {
81             q->lchild = s->lchild;
82         }
83 
84         free(s);
85     }
86 
87     return T;
88 }

 

 

13

8.3树表的查找

标签:

原文地址:http://www.cnblogs.com/denggelin/p/5724371.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!