将顺序二叉树存储序列转化为链式存储序列-c语言

Posted 超浪*牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将顺序二叉树存储序列转化为链式存储序列-c语言相关的知识,希望对你有一定的参考价值。

将顺序二叉树存储序列转化为链式存储序列

- 题目描述:

将给定顺序二叉树存储序列转换为链式二叉树存储序列显示
char data[13] = {‘0’,‘A’,‘B’,‘C’,‘0’,‘D’,‘E’,‘F’,‘0’,‘0’,‘G’,‘H’,‘0’,‘I’}

  • 题解思路:首先理解二叉树的顺序存储结构原理,首先根节点的编号(下标)为1的是根节点,左孩子下标为2i,右孩子是2i+1。在二叉树的链式存储中是按照先序输出的序列输出的,那么
  • 思路一:二叉树的先序输出序列(包括‘0’)就是链式的输入输入序列。
  • 思路二:常见的是,根据顺序二叉树输入序列的性质,可以知道每个数组元素的在二叉树中的对应位置,利用递归算法。只要是二叉树就往递归上靠近

思路二的代码描述:

void Link(char data[],int i) {
	printf("%c ",data[i]);
	if(data[2*i]!='0'&&2*i<14){
		Link(data,2*i);
	}else{
		printf("%c ",'0');
	}			
	if(data[2*i+1]!='0'&&2*i+1<14){
		Link(data,2*i+1);
	}else{
		printf("%c ",'0');
	}
}

结果显示:
在这里插入图片描述

以上是关于将顺序二叉树存储序列转化为链式存储序列-c语言的主要内容,如果未能解决你的问题,请参考以下文章

数据结构复习笔记——二叉树的常用接口的实现(c语言)

二叉树的存储问题(顺序存储和链式存储)

二叉树的链式存储和顺序存储对比

二叉树的创建与遍历(链式存储)

Java-数据结构:树

数据结构:二叉树的链式存储