将顺序二叉树存储序列转化为链式存储序列-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语言的主要内容,如果未能解决你的问题,请参考以下文章