c语言实现用递归算法输出二叉树中从每个叶子结点到根结点的路径
时间: 2023-12-29 22:04:21 浏览: 26
假设二叉树的结构体定义如下:
```c
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
```
可以使用递归算法来输出每个叶子结点到根结点的路径,具体实现如下:
```c
void printPaths(struct TreeNode* root, int path[], int pathLen) {
if (root == NULL) {
return;
}
// 将当前结点的值加入路径中
path[pathLen] = root->val;
pathLen++;
// 如果当前结点是叶子结点,则输出路径
if (root->left == NULL && root->right == NULL) {
for (int i = pathLen - 1; i >= 0; i--) {
printf("%d ", path[i]);
}
printf("\n");
}
else {
// 否则继续遍历左右子树
printPaths(root->left, path, pathLen);
printPaths(root->right, path, pathLen);
}
}
```
在主函数中调用该函数即可输出每个叶子结点到根结点的路径:
```c
int main() {
struct TreeNode* root = createBinaryTree(); // 创建二叉树
int path[100]; // 存储路径
int pathLen = 0; // 路径长度
printPaths(root, path, pathLen); // 输出路径
return 0;
}
```
其中 `createBinaryTree()` 是创建二叉树的函数,需要根据实际情况进行实现。