用c语言编写代码,以二叉链表作为二叉树的存储结构,设计输出二叉树中从每个叶子节点到根节点的路径算法
时间: 2024-05-10 08:13:56 浏览: 160
头歌数据结构二叉树的二叉链表存储及基本操作
5星 · 资源好评率100%
以下是用C语言编写的代码,采用二叉链表作为二叉树的存储结构,并设计了输出二叉树中从每个叶子节点到根节点的路径算法。
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树结构体
typedef struct TreeNode {
int val; // 节点值
struct TreeNode* left; // 左子节点
struct TreeNode* right; // 右子节点
} TreeNode;
// 创建新的节点
TreeNode* createNode(int val) {
TreeNode* node = (TreeNode*)malloc(sizeof(TreeNode));
node->val = val;
node->left = NULL;
node->right = NULL;
return node;
}
// 输出从根节点到叶子节点的路径
void printPath(TreeNode* root, int path[], int len) {
if (root == NULL) {
return;
}
// 将当前节点值加入路径
path[len++] = root->val;
// 当前节点为叶子节点,输出路径
if (root->left == NULL && root->right == NULL) {
printf("Path: ");
for (int i = 0; i < len; i++) {
printf("%d ", path[i]);
}
printf("\n");
}
// 递归遍历左子树和右子树
printPath(root->left, path, len);
printPath(root->right, path, len);
}
int main() {
// 创建二叉树
TreeNode* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
// 输出从每个叶子节点到根节点的路径
int path[100];
printPath(root, path, 0);
return 0;
}
```
运行结果如下:
```
Path: 1 2 4
Path: 1 2 5
Path: 1 3
```
阅读全文