#include<stdio.h>
#include<malloc.h>
typedef struct node{
int data;
struct node *lchild;
struct node *rchild;
} *binaryTree;
binaryTree init();
void printLeavesToRoot(binaryTree root, int* arr, int pos);
int main()
{
/*
input:
1
2 3
4 5 6 7
*/
binaryTree root = init();
int arr[100] = {0}, pos = 0;
printLeavesToRoot(root, arr, pos);
}
binaryTree init()
{
binaryTree node1 = (binaryTree)malloc(sizeof(struct node)); node1->data = 1;
binaryTree node2 = (binaryTree)malloc(sizeof(struct node)); node2->data = 2;
binaryTree node3 = (binaryTree)malloc(sizeof(struct node)); node3->data = 3;
binaryTree node4 = (binaryTree)malloc(sizeof(struct node)); node4->data = 4;
binaryTree node5 = (binaryTree)malloc(sizeof(struct node)); node5->data = 5;
binaryTree node6 = (binaryTree)malloc(sizeof(struct node)); node6->data = 6;
binaryTree node7 = (binaryTree)malloc(sizeof(struct node)); node7->data = 7;
node1->lchild = node2; node1->rchild = node3;
node2->lchild = node4; node2->rchild = node5;
node3->lchild = node6; node3->rchild = node7;
node4->lchild = NULL; node4->rchild = NULL;
node5->lchild = NULL; node5->rchild = NULL;
node6->lchild = NULL; node6->rchild = NULL;
node7->lchild = NULL; node7->rchild = NULL;
return node1;
}
void printLeavesToRoot(binaryTree root, int *arr, int pos)
{
if(root == NULL)
return;
arr[pos++] = root->data;
if(root->lchild == NULL && root->rchild == NULL)
{
pos --;
for(int i = pos; i >=0; i--)
printf("%d ", arr[i]);
printf("\n");
return;
}
printLeavesToRoot(root->lchild, arr, pos);
printLeavesToRoot(root->rchild, arr, pos);
}
打印叶节点到根的路径
最新推荐文章于 2024-11-12 20:24:31 发布
本文介绍了一个C语言实现的二叉树初始化、节点分配和打印从叶子节点到根节点的递归函数。通过`init()`函数创建了包含1-7节点的二叉树,并使用`printLeavesToRoot()`函数按顺序输出节点数据,展示如何遍历结构。
摘要由CSDN通过智能技术生成