【构建二叉树】

根据先序和中序构建二叉树

#include <stdio.h>
#include <stdlib.h>
#include <error.h>

typedef struct struct_tree * Tree;
struct struct_tree
{
	Tree  left;
	Tree  right;
	int   element;
};


static Tree constructtree(int *head_arr, int *end_head, int *mid_arr, int *end_mid)
{
	Tree   tree = (Tree)malloc(sizeof(*tree));
	if(tree==NULL){
		printf("there is no space\n");
		return 0;
	}
	int element = head_arr[0];
	tree->element = element;
	tree->right = NULL;
	tree->left = NULL;
	
	printf("element is %d\n", element);
	if(head_arr==end_head&&mid_arr==end_mid&&*head_arr==*mid_arr){
		return tree;
	}
	
	
	//在中序中找到root节点
	int *rootorder = mid_arr;
	while(rootorder<=end_mid){
		//printf("rootorder is %d\n", *rootorder);
		if(*rootorder==element)
			break;
		rootorder++;
	}
	
	//printf("secound element is %d\n", *rootorder);
	int left_len = rootorder-mid_arr;
	int *lefttree = head_arr+left_len;
	if(left_len>0){
		tree->left = constructtree(head_arr+1, lefttree, mid_arr, rootorder-1);
		printf("left element is %d\t  left_len is %d\n", tree->left->element, left_len);
	}
	if(left_len<end_head-head_arr){
		tree->right = constructtree(lefttree+1, end_head, rootorder+1, end_mid);
		printf("right element is %d\t left_len is %d\n", tree->right->element, left_len);
	}
	return tree;
}

static int tailview(Tree tree)
{
	if(tree!=NULL){
		tailview(tree->left);
		printf("%d\n", tree->element);
		tailview(tree->right);
		
	}
	return 0;
}

int main()
{
	int head_arr[] = {1, 2, 4, 7, 3, 5, 6, 8};
	int head_len = sizeof(head_arr)/sizeof(head_arr[0]);
	int mid_arr[] = {4, 7, 2, 1, 5, 3, 8, 6};
	int mid_len = sizeof(mid_arr)/sizeof(mid_arr[0]);
	
	//printf("head_len is %d\n", head_len);
	//printf("mid_len is %d\n", mid_len);
	Tree  tree = constructtree(head_arr,  head_arr+head_len-1, mid_arr, mid_arr+mid_len-1);
	//tailview(tree);
	return 0;
}

先从左子树开始建立

右子树同理

构建二叉树如下所示:

已知二叉树的先序、中序排列和中序、后序排列都可以构造二叉树,但是已知二叉树的先序和后序是无法知道构建二叉树的。

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在 IT 领域,文档格式转换是常见需求,尤其在处理多种文件类型时。本文将聚焦于利用 Java 技术栈,尤其是 Apache POI 和 iTextPDF 库,实现 doc、xls(涵盖 Excel 2003 及 Excel 2007+)以及 txt、图片等格式文件向 PDF 的转换,并实现在线浏览功能。 先从 Apache POI 说起,它是一个强大的 Java 库,专注于处理 Microsoft Office 格式文件,比如 doc 和 xls。Apache POI 提供了 HSSF 和 XSSF 两个 API,其中 HSSF 用于读写老版本的 BIFF8 格式(Excel 97-2003),XSSF 则针对新的 XML 格式(Excel 2007+)。这两个 API 均具备读取和写入工作表、单元格、公式、样式等功能。读取 Excel 文件时,可通过创建 HSSFWorkbook 或 XSSFWorkbook 对象来打开相应格式的文件,进而遍历工作簿中的每个 Sheet,获取行和列数据。写入 Excel 文件时,创建新的 Workbook 对象,添加 Sheet、Row 和 Cell,即可构建新 Excel 文件。 再看 iTextPDF,它是一个用于生成和修改 PDF 文档的 Java 库,拥有丰富的 API。创建 PDF 文档时,借助 Document 对象,可定义页面尺寸、边距等属性来定制 PDF 外观。添加内容方面,可使用 Paragraph、List、Table 等元素将文本、列表和表格加入 PDF,图片可通过 Image 类加载插入。iTextPDF 支持多种字体和样式,可设置文本颜色、大小、样式等。此外,iTextPDF 的 TextRenderer 类能将 HTML、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值