1 #include "iostream"
2 #include "stdlib.h"
3
4 #define log(s); std::cout< 5
6 typedef struct _btree_
7 {
8 int data;
9 struct _btree_ *left;
10 struct _btree_ *right;
11 }BTree;
12
13 BTree *createNode(int data)
14 {
15 BTree *p = (BTree *)malloc(sizeof(BTree));
16 p->data = data;
17 p->left = nullptr;
18 p->right = nullptr;
19 return p;
20 }
21
22 BTree *findKey(BTree *father,int data)
23 {
24 if (father->data < data)
25 return findKey(father->right, data);
26 else if (father->data>data)
27 return findKey(father->left, data);
28 else
29 return father;
30 }
31
32 BTree *findMax(BTree *root)
33 {
34 if (root->right == nullptr)
35 return root;
36 else
37 return findMax(root->right);
38 }
39
40 BTree *findMin(BTree *root)
41 {
42 if (root->left == nullptr)
43 return root;
44 else
45 return findMin(root->left);
46 }
47
48 BTree *createTree(BTree *&root)
49 {
50 BTree *t1, *t2, *t3, *t4, *t6, *t7, *t8, *t9, *t10;
51 t1 = createNode(1);
52 t2 = createNode(4);
53 t3 = createNode(3);
54 t4 = createNode(2);
55 t6 = createNode(7);
56 t7 = createNode(5);
57 t8 = createNode(9);
58 t9 = createNode(8);
59 t10 = createNode(12);
60 root->left = t4;
61 root->right = t6;
62 t4->left = t1;
63 t4->right = t2;
64 t2->left = t3;
65 t6->left = t7;
66 t6->right = t8;
67 t8->left = t9;
68 t8->right = t10;
69 return root;
70 }
71
72 void showResult(BTree *node)
73 {
74 if (node == nullptr)
75 return;
76 std::cout <data << std::endl;
77 }
78
79 int main(void)
80 {
81 BTree *root = nullptr;
82 BTree *result = nullptr;
83 root = createNode(6);
84 root = createTree(root);
85 result = findKey(root,6);
86 log("查找结果:");
87 showResult(result);
88 result = findMax(root);
89 log("最大值:");
90 showResult(result);
91 result = findMin(root);
92 log("最小值:");
93 showResult(result);
94 system("pause");
95 return 0;
96 }
1 BTree *findMax(BTree *root)
2 {
3 if (root != nullptr)
4 while (root->right != nullptr)
5 root = root->right;
6 return root;
7 }