树和二叉树直接开肝(数据结构二叉树选择题?秒解好叭,里面一定会有你想要的,铁铁)

是不是数据结构考试将近,又被二叉树相关选择题搞的一头雾水!?!

兄弟,俺来帮你嘞!!!

【本篇内容】-------------(先来瞅一瞅)

 ~ 1.树概念及结构

~ 2.二叉树概念,性质及结构

1.树概念及结构

1.1树的概念

树是一种非线性的数据结构,其是由n个有限结点组成的一种具有层次关系的集合;

形如此:

*有一个特殊的结点,称为根节点,根节点没有前驱结点,其余结点均具有一个前驱结点;

*每个结点都含有0个或多个后续结点

*树本身也是有一颗颗“小树”,子树组合而成,因而可知树本身是递归定义的

注:树形结构中,子树之间不能有交集,否则便不是树形结构

例如以下,均为“非树

补充:有上述对树的描述,以及图片易发现------除了根节点外,其余结点均具有前驱结点,则容易知道N个结点的树,有N-1条边

1.2树的概念

1.3 树的表示方式

树结构,根据其本身,便要做到既要保存值域,也保存结点之间的关系;

实际树也有很多表示方式,例:双亲表示法,孩子表示法,孩子双亲表示法,以及孩子兄弟表示法等(双亲表示法,顾名思义,其找某个结点孩子容易,但是找双亲不便,孩子表示法同理)

孩子兄弟表示法,图解

2. 二叉树概念及结构

2.1 概念

* 二叉树,其实为树一个“真子集”,特在其每个结点的度最大为2;

* 由一个根节点加上两棵树,分别为左子树和右子树(均为二叉树)组成;

* 其所具有的左右节点,是有顺序之分的,次序不得颠倒;

注:对于任意二叉树都是由一下集中情况复合而成

 

 2.2 特殊的二叉树

1.满二叉树:二叉树中的每个结点的度数均为2,即每层都达到结点的满状态

2.完全二叉树:高度为的K的完全二叉树,其K-1层为满二叉树状态,第K层,节点从左至右依次排列,例如,一个节点有右孩子,却没有左孩子,则为非完全二叉树;

下图为“非完全二叉树”和“完全二叉树

 2.3  二叉树的性质(数据上的特点,快要考试的铁铁快来瞅瞅~~~~)

1.若规定根节点的层数为1,则第i层至多有2^(i-1)个节点;

2.若规定根节点的层数为1,则整个二叉树至多有2^i - 1个节点;

(上两种特点的“至多”情况,实则也为满二叉树的特点)

3.对于任何一棵二叉树,若度为0的节点个数为n0,度为2的节点个数为n2,则一定有n0=n2+1;

证:

假设树的边数为L,节点总数为N,则一定有L=N-1;(树的特点)

 再有二叉树本身,度数其实也决定了该节点后续所连边数,故有 0*n0+1*n1+2n2=N-1;

同时二叉树,N=n0+n1+n2;

两式,相减便得,n0=n2+1;(灰常有用!!!)

 4.若规定根节点的层数为1,具有n个结点的满二叉树的深度,h=log2(n+1)----以1.性质可推的

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

a. 若i>0,i位置节点双亲序号:(i-2)/2  (i=0时,即为根节点,无双亲)

b. 若2i+1<n,左孩子序号:2i+1,反之则无左孩子;

c. 若2i+2<n,孩子序号:2i+2,反之则无右孩子;

附加解题小技巧:

由完全二叉树,特点可以得一个规律为:

》》当一个完全二叉树的节点数字N为奇数,无度为1的节点,N为偶数,只有一个度为1的节点。

* 运用:

在一棵具有2N节点数的完全二叉树中,求其叶子结点数(即度为0的节点树);

由二叉树的性质可得:

n0+n1+n2=2N      2N-1=n0+n1+2n2

由于节点数为偶数,由结论可知,n1=1;

化简,便可得,n0=N;

2.4 二叉树的存储结构

二叉树一般有链式存储结构顺序存储结构;

2.4.1.顺序存储结构

该顺序存储结构,实质也就是用数组存储二叉树中节点的值域,但只能是完全二叉树

主要也是源于N层完全二叉树,前N-1层为满二叉树的形式且第N层从左至右依次排列这一特点。

从数组的形式,转至二叉树形式,也可准确画出图像。(物理上为数组,逻辑上仍为二叉树)

如此图所示

但是“非完全二叉树” 也不是完全不能采用顺序存储形式(可将其“补为完全二叉树形式”)

如此图所示:

此类将非完全二叉树采用顺序存储模式,也会有弊端,例如左(或右)支树时,之后在所开辟的数组中,有效元素少,浪费了大量空间

 2.4.2.链式存储形式

链式结构又分为二叉树和三叉树(红黑树);

链式存储形式即是用链表的形式实现逻辑上的二叉树。

通常的方法中链表有三个域组成,分别是数值域,左右指针域(即左右孩子所在链节点的地址)三部分;

二叉树:

三叉树(三叉树链表节点域则在二叉树基础上多了一个parent父节点指针域):

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值