C设计一个算法求从根结点到值为x(x的值从键盘输入)的结点路径。
时间: 2024-11-09 17:28:47 浏览: 21
谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar )
5星 · 资源好评率100%
在C语言中,你可以使用深度优先搜索(Depth First Search, DFS)或者广度优先搜索(Breadth First Search, BFS)来寻找从根节点到值为x的节点路径。这里我将以DFS为例给出一种简单的方法:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树结构体
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 检查是否有从根节点到目标节点的路径
bool hasPathToTarget(TreeNode* root, int target) {
if (root == NULL) return false; // 根节点为空,则无路径
// 如果当前节点值等于目标值,返回true
if (root->val == target)
return true;
// 递归检查左子树和右子树
return hasPathToTarget(root->left, target) || hasPathToTarget(root->right, target);
}
int main() {
// 创建二叉树实例并填充数据
TreeNode* root = ...; // 初始化根节点
int x;
printf("请输入你要查找的目标值x: ");
scanf("%d", &x);
if (hasPathToTarget(root, x)) {
printf("存在从根节点到值为 %d 的节点的路径。\n", x);
} else {
printf("不存在从根节点到值为 %d 的节点的路径。\n", x);
}
return 0;
}
```
阅读全文