二叉树
最后更新于
这有帮助吗?
二叉树 T:一个有穷的结点集合
这个集合 可以为空
若不为空,则它是由 根节点 和其称为其 左子树 和 右子树 的两个不想交的二叉树组成
斜二叉树(Skewed Binary Tree)
完美二叉树(Perfect Binary Tree)/ 满二叉树(Full Binary Tree)
完全二叉树(Complete Binary Tree)
与满二叉树的区别:叶子结点可以不满,但是要按照从左到右的顺序存放
一个二叉树第 层的最大结点树为:
深度为 的二叉树有最大结点总数为:
对于任何非空二叉树 T,若 表示叶结点的个数、 是度为 2 的非叶结点个数,那么两者满足关系
这类关系的证明只需要把握一个等式关系:总边数 = 总度数
类型名称:二叉树
数据对象集:一个有穷的结点集合。若不为空,则由 根结点和其左、右二叉子树 组成
操作集: ,重要的操作有:
Boolean IsEmpty(BinTree BT)
:判断 是否为空;
void Traversal(BinTree BT)
:遍历,按某顺序访问每个结点;
BinTree CreatBinTree()
:创建一个二叉树。
常用的遍历方法有:
void PreOrderTraversal(BinTree BT)
:先序(根、左子树、右子树)
void InOrderTraversal(BinTree BT)
:中序(左子树、根、右子树)
void PostOrderTraversal(BinTree BT)
:后序(左子树、右子树、根)
void LevelOrderTraversal(BinTree BT)
:层次遍历(从上到下、从左到右)
利用数组存储,结点下标从 1 开始计数,结点 的左孩子下标为 ,右孩子下标为
若一棵树非完全二叉树,就会造成空间浪费