Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2788515
  • 博文数量: 471
  • 博客积分: 7081
  • 博客等级: 少将
  • 技术积分: 5369
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-04 21:55
文章分类

全部博文(471)

文章存档

2014年(90)

2013年(69)

2012年(312)

分类: C/C++

2012-09-05 16:10:32

链式存储结构
 

1.结点的结构
     二叉树的每个结点最多有两个孩子。用链接方式存储二叉树时,每个结点除了存储结点本身的数据外,还应设置两个指针域lchild和rchild,分别指向该结点的左孩子和右孩子。结点的结构为:
           

2.结点的类型说明
    typedef char DataType; //用户可根据具体应用定义DataType的实际类型 
    typedef struct node{
          DataType data; 
          Struct node *lchild,*rchild; //左右孩子指针
      }BinTNode; //结点类型
    typedef BinTNode *BinTree;//BinTree为指向BinTNode类型结点的指针类型

3.二叉链表(二叉树的常用链式存储结构)
     在一棵二叉树中,所有类型为BinTNode的结点,再加上一个指向开始结点(即根结点)的BinTree型头指针(即根指针)root,就构成了二叉树的链式存储结构,并将其称为二叉链表。
  【例】下面左图所示二叉树的二叉链表如下面中图所示。 
      
  注意:
     ① 一个二叉链表由根指针root惟一确定。若二叉树为空,则root=NULL;若结点的某个孩子不存在,则相应的指针为空。
     ② 具有n个结点的二叉链表中,共有2n个指针域。其中只有n-1个用来指示结点的左、右孩子,其余的n+1个指针域为空。

注意:
     二叉树存储方法的选择,主要依赖于所要实施的各种运算的频度。


阅读(2417) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~