1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| #include<stdio.h> #include<stdlib.h>
typedef struct TreeNode { int data; struct TreeNode* left; struct TreeNode* right; }TreeNode;
TreeNode* createTreeNode(int value) { TreeNode* newNode = (TreeNode*)malloc(sizeof(TreeNode)); newNode->data = value; newNode->left = NULL; newNode->right = NULL; return newNode; }
TreeNode* find(TreeNode* root, int value) { if (root == NULL || root->data == value) { return root; } if (value < root->data) { return find(root->left, value); } else { return find(root->right, value); } }
TreeNode* Find(TreeNode* root, int value) { TreeNode* a = root; while (a != NULL && a->data != value) { if (value < a->data) { a = a->left; } else { a = a->right; } } return a; }
int main() { TreeNode* root = createTreeNode(50); root->left = createTreeNode(30); root->right = createTreeNode(70); root->left->left = createTreeNode(20); root->left->right = createTreeNode(40); root->right->left = createTreeNode(60); root->right->right = createTreeNode(80);
int value; printf("Enter value to search: "); scanf_s("%d", &value);
TreeNode* resultRecursive = find(root, value); if (resultRecursive != NULL) { printf("Recursive search: Value %d found!\n", value); } else { printf("Recursive search: Value %d not found!\n", value); }
TreeNode* resultIterative = Find(root, value); if (resultIterative != NULL) { printf("Iterative search: Value %d found!\n", value); } else { printf("Iterative search: Value %d not found!\n", value); }
return 0; }
|