C语言用递归实现二叉排序树的查找并给出查找路径,用代码显示出来
时间: 2024-05-06 09:21:02 浏览: 90
这个问题非常适合回答,可以通过递归实现二叉排序树的查找,并且给出查找路径的代码展示,代码如下:
```
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
}TreeNode;
TreeNode* Search(TreeNode *root, int val, TreeNode **path) {
if (!root) return NULL;
if (root->val == val) return root;
if (path) *path = root; // 记录搜索路径
if (root->val > val)
return Search(root->left, val, path);
return Search(root->right, val, path);
}
void displayPath(TreeNode **path, int cnt) {
if (cnt <= 0) return;
displayPath(path + 1, cnt - 1);
printf("%d ", (*path)->val);
}
void searchBST(TreeNode* root, int val) {
TreeNode *path[1000], *node;
memset(path, 0, sizeof(path)); // 初始化数组
node = Search(root, val, path);
if (!node) printf("Not Found!\n");
else {
printf("Found! Path: ");
displayPath(path, (int)(node - root));
printf("\n");
}
}
```
这段代码实现了二叉排序树的查找,并且记录了查找的路径,最后展示出来。
阅读全文