数据结构-树

1、树的定义

树是n(n>=0)个结点的有限集。当n = 0时,称为空树。在任意一棵非空树中应满足:

1.有且仅有一个特定的称为根的结点。

2.当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm,其中每个集合本身又是一棵树,并且称为根的子树。

显然,树的定义是递归的,即在树的定义中又用到了自身,树是一种递归的数据结构。树作为一种逻辑结构,同时也是一种分层结构,具有以下两个特点:

1.树的根结点没有前驱,除根结点外的所有结点有且只有一个前驱。

2.树中所有结点可以有零个或多个后继。

因此n个结点的树中有n-1条边

2、基本术语

  1. 一个节点的子树的个数称为该节点的度数
  2. 一棵树的度数是指该树中节点的最大度数。
  3. 度数为零的节点称为树叶或终端节点,度数不为零的节点称为分支节点除根节点外的分支节点称为内部节点。
  4. 结点的深度是从根结点开始自顶向下逐层累加的。
    结点的高度是从叶结点开始自底向上逐层累加的。

3、二叉树具有如下最基本的性质

1.任意一棵树,若结点数量为n ,则边的数量为n − 1

2.二叉树第i(i>1)层上的节点最多2^(i-1)

3.深度为k(k≥1)的二叉树最多有2^(k)-1个节点。

4.满二叉树 :深度为k(k≥1)时有2^(k)-1个节点的二叉树。

5.完全二叉树 :只有最下面两层有度数小于2的节点,且最下面一层的叶节点集中在最左边的若干位置上。

6.具有n个节点的完全二叉树的深度为

(log2n)+1或 log2(n+1)log以2为底

顺序存储结构 :完全二叉树节点的编号方法是从上到下,从左到右,根节点为1号节点。

设完全二叉树的节点数为n某节点编号为i

1.当i>1(不是根节点)时,有父节点,其编号为i/2;

2.本身是叶节当2*i<=n时,有左孩子,其编号为2*i,否则没有左孩子,本身是叶节点

3.当2*i+1≤n时,有右孩子,其编号为2*i+1,否则没有孩子

链式存储结构

typedef int datatype;

typedef struct node

{

        datatype data;//节点数据

        struct node *left,*right;//左右孩子指针

}bitree;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值