关于二叉树结点实现随机访问问题

关于实现二叉树各个结点的随机访问 ( 修改删除和插入) 问题

算法分析:

先定义一个全局指针类型的数组*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);

      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值