给一个根结点root按任意顺序返回所有从根结点到叶子结点路径 用c语言
时间: 2024-10-27 15:08:56 浏览: 40
在C语言中,你可以使用深度优先搜索(DFS)算法来遍历二叉树并获取所有从根节点到叶子节点的路径。这里有一个简单的递归函数示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
// DFS 函数,用于存储路径
void printPath(TreeNode* node, char path[], int depth) {
if (!node) return; // 如果节点为空,结束当前路径
path[depth] = node->val + '0'; // 将节点值转换为字符并添加到路径字符串
path[depth+1] = '\0';
// 打印路径
printf("%s\n", path);
// 递归处理左孩子和右孩子
printPath(node->left, path, depth+1);
printPath(node->right, path, depth+1);
}
// 主函数,获取并打印所有路径
void getAllPaths(TreeNode* root) {
if (!root) return;
char path[1000]; // 足够大以容纳最长路径
path[0] = '\0';
printPath(root, path, 0);
}
int main() {
// 初始化二叉树...
TreeNode* root = ...;
getAllPaths(root); // 调用函数获取所有路径
return 0;
}
```
这个代码首先检查根节点是否存在,然后递归地访问左子树和右子树,同时将每个节点的值追加到路径字符串中。当到达叶节点时,会打印出完整的路径。
阅读全文