数据结构:树和二叉树

树的概念

1.树是一种非线性的数据结构。它是由n个有限节点的集合。

2.树分为根节点和子树。根节点没有前驱节点。

3.树的子树是由一个个子树组成,它们可以看作一个个集合。每个集合下面又有集合。

因此,树是递归定义的。

树形结构中,子树之间不能有交集,除了根节点外,每个节点只有一个父节点。一颗N节点的树,有N-1条边。

如上图所示,F节点是所有节点的根节点,也是祖先节点。D是F的孩子节点,是左孩子。ABC是F的子孙节点。

树的表示,一般采用最常用的孩子兄弟表示法。

树节点的第一个指针指向左边第一个孩子,第二个指针指向它的兄弟节点。

typedef int DataType;
struct Node
{
   struct Node * firstchild;
   struct Node * pnextbrother;
   DataType data;
};

树在实际中的应用:

表示文件系统的目录。

windows文件下也有众多文件,当访问时,就会出现在用户面前,这些访问就通过树的访问方式进行访问的。

二叉树概念及结构

概念

在之前树的概念的基础上,限制了度。二叉树的度不超过2。也就是说,二叉树的所有节点的孩子,最多只能有两个。

二叉树的子树有左右之分,因此是有序的树。

下图是满二叉树。

下图为完全二叉树

满二叉树的特征:

每一层的结点数都达到最大值。

如果它的层数为h,那么总结点数为2^h-1.

完全二叉树的特征:

完全二叉树是中间没有漏节点的有序的二叉树,它是由满二叉树引申来的

二叉树的性质:

1.如果根节点是第1层,那么一颗非空二叉树的第i层上最多有2^(i-1)个节点。

2.如果根节点是第1层,那么深度为h为的二叉树最大节点数是2^h-1。

3.对任何一棵二叉树,如果度为0的叶子节点数是N0,度为2的节点数为N2,则有N0=N2+1。

4.若规定根节点是第一层,具有n个节点的满二叉树的深度为h=log(N+1).

5.对于具有n个节点的完全二叉树,如果按照从上至下从左至右的数组顺序对所有节点从0开始编号。则对于序号为i的节点有:

       1.若i > 0,i位置节点的双亲序号: (i-1) / 2;

       2.若 2i+1 < n , 左孩子序号: 2i+1, 2i+1>=n 则无右孩子。

       3.若 2i+2 < n,右孩子序号:2i+2,    2i+2  >=n  则无右孩子。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值