用C语言求二叉函数的所有路径
时间: 2024-04-09 16:28:38 浏览: 27
要使用C语言求二叉树的所有路径,你可以使用深度优先搜索(DFS)算法来遍历二叉树。下面是一个示例代码来获取二叉树的所有路径:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结点定义
struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
};
// 创建新结点
struct TreeNode* createNode(int val) {
struct TreeNode* newNode = (struct TreeNode*)malloc(sizeof(struct TreeNode));
newNode->val = val;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 深度优先搜索获取路径
void dfs(struct TreeNode* root, int* path, int pathLen) {
if (root == NULL)
return;
// 将当前结点加入路径
path[pathLen] = root->val;
pathLen++;
// 如果是叶子结点,打印路径
if (root->left == NULL && root->right == NULL) {
printf("Path: ");
for (int i = 0; i < pathLen; i++) {
printf("%d ", path[i]);
}
printf("\n");
}
else {
// 递归遍历左右子树
dfs(root->left, path, pathLen);
dfs(root->right, path, pathLen);
}
}
// 获取二叉树的所有路径
void getAllPaths(struct TreeNode* root) {
if (root == NULL)
return;
int path[100];
dfs(root, path, 0);
}
int main() {
// 创建二叉树
struct TreeNode* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
// 获取二叉树的所有路径
getAllPaths(root);
return 0;
}
```
以上代码创建了一个简单的二叉树,并使用深度优先搜索算法获取了所有的路径,并打印出来。你可以根据自己的需求对代码进行修改和扩展。