关于实现二叉树各个结点的随机访问 ( 修改删除和插入) 问题
算法分析:
先定义一个全局指针类型的数组*a[100]. 为了实现二叉树各结点的随机访问, 我们可以在按照某种序列( 例如: 先序) 创建的同时, 将生成的结点依次存入定义的指针类型数组中. 即各个结点的地址也按照某种序列( 先序 ) 顺序存入指针类型数组中.
在这里以先序创建为例
如图所示:
1
/ \
2 7
/ \ / \
3 4 8 9
/ \
5 6
图中数字为以先序创建二叉树, 所创建各结点的顺序
对于各结点的地址也以此序列存入数组a中;
由于数组a可以实现随机访问;
此时只需要随机访问数组下标,即可实现各结点的随机访问
代码实现:
这里的访问为输出结点
#include<stdio.h>
#include<stdlib.h>
struct node {
intLtag;
structnode *Lchild;
intdata;
intRtag;
structnode *Rchild;
}*pre,*top[20];
int i=0,j=0;
inta[20]={1,2,3,0,0,4,5,0,0,6,0,0,7,8,0,0,9,0,0};
int main()
{
intk;
voidcreat(struct node **root);