二叉树及其储存结构

二叉树及其储存结构

0x00 二叉树的定义

二叉树: 有穷的节点集合,可为空,若非空,则分为根节点和左子树和右子树,且不相交(递归定义)

TIM截图20200203135722

一些特殊的二叉树

TIM截图20200203135814

0x01 二叉树性质

1一个二叉树第i层的最大节点数为:2^(i-1),i>=1;

2深度为k的二叉树有最大节点总数为:2^k-1,k>=1;

3对于任何非空二叉树,如n0表示叶节点个数,n2表示度为2的节点个数,那么关系为n0=n2+1

原因 从上往下看 边的总数为:n1+2*n2,从下往上看为:n0+n1+n2-1,两者相等,故 n0=n2+1

TIM截图20200203140443

二叉树的抽象数据类型定义

TIM截图20200203140539

0x02 二叉树的实现

1顺序储存结构,对于完全二叉树,按从上往下,从左往右进行编号,储存在数组里

TIM截图20200203140749

一般二叉树也可以这么存,但是由于空缺节点的存在,会产生空间浪费。

TIM截图20200203140907

2链表储存

TIM截图20200203141057