二叉树的基本概念

Posted SOSOG的学习室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树的基本概念相关的知识,希望对你有一定的参考价值。

注意:二叉树是有序树,分左右!!

二叉树的五种基本状态

几个特殊的二叉树

(1)满二叉树和完全二叉树

按层序编号,则可以通过一个结点知道其双亲结点和孩子结点的编号。

二叉树的基本概念

(2)二叉排序树

二叉树的基本概念

给定一个数字序列,构造二叉排序树。

(3)平衡二叉树

二叉树的基本概念

二叉树的性质

二叉树的基本概念

二叉树的基本概念

二叉树的基本概念


完全二叉树的性质

二叉树的基本概念

二叉树的基本概念

二叉树的基本概念

二叉树的存储结构

顺序存储结构

注:用顺序存储方式数组下标最好从1开始,这样才能利用完全二叉树的性质。

二叉树的基本概念

依据二叉树的性质,完全二叉树和满二叉树采用顺序存储比较合适,树中结点的序号可以唯一地反映结点之间的逻辑关系,这样既能最大可能地节省存储空间,又能利用数组元素的下标值确定结点在二叉树中的位置,以及结点之间的关系。

二叉树的基本概念

但对于一般的二叉树,为了让数组下标能反映二叉树中结点之间的逻辑关系,只能添加一些并不存在的空结点,让其每个结点与完全二叉树上的结点相对照,再存储到一维数组的相应分量中。然而,在最坏情况下,一个高度为h且只有h个结点的单支树却需要占据近2^h-1个存储单元。

二叉树的基本概念

二叉树的基本概念


链式存储结构

由于顺序存储的空间利用率较低,因此二叉树一般都采用链式存储结构,用链表结点来存储二叉树中的每个结点。在二叉树中,结点结构通常包括若干数据域和若干指针域,二叉链表至少包含3个域:数据域data、左指针域lchild和右指针域rchild。

定义二叉链表的结点

 typedef struct BiTNode{ ElemType data; struct BiTNode *lchild,*rchild; }BiTNode, *BiTree;

二叉链表的操作

链式存储如果要找到指定结点p的左右孩子很简单,但找到双亲结点的则只能从根结点开始遍历寻找。看哪个结点的lchild或rchild指针是指向p结点的。

如果经常要访问双亲结点,就要加一个双亲指针,构成三叉链表

 typedef struct BiTNode{ ElemType data; struct BiTNode *lchild,*rchild,*parent; }BiTNode,*BiTree;


以上是关于二叉树的基本概念的主要内容,如果未能解决你的问题,请参考以下文章

树二叉树存储结构二叉数遍历& 数据结构基本概念和术语

数据结构 树与二叉树的基本概念结构特点及性质

二叉树的基本概念

10分钟掌握-二叉树的基本概念

树-二叉树的基本概念

线索二叉树的基本概念