目录python
二叉树T:一个有穷的结点集合。spa
二叉树具体五种基本形态code
二叉树的子树有左右顺序之分对象
斜二叉树以下图所示:blog
完美二叉树也称做满二叉树(Full Binary Tree)it
完美二叉树以下图所示:io
有n个结点的二叉树,对树中结点按从上至下、从左到右顺序进行编号,编号为\(i(1\leq{i}\leq{n})\)结点与满二叉树中编号为i结点在二叉树位置相同。class
彻底二叉树以下图所示:二叉树
以下图所示的二叉树即不为彻底二叉树:rsa
深度为k的二叉树有最大结点总数为:\(2^k -1, \quad k\geq{1}\)
对任何非空二叉树T,若\(n_0\)表示叶节点的个数、\(n_2\)是度为2的非叶结点个数,那么二者知足关系\(n_0=n_2+1\)
类型名称:二叉树
数据对象集:一个有穷的结点集合。若不为空,则由根节点和其左、右二叉子树组成。
操做集:\(BT\in{BinTree},\quad Item \in ElementType\),其重要操做有:
BooleanIsEmpty(BinTree BT)
:判断BT是否为空;void Traversal(BinTree BT)
:遍历,按某顺序访问每一个结点;BinTree CreateBinTree()
:建立一个二叉树。接下来介绍几个经常使用的遍历方法,将来会详细讲解。
void PreOrderTraversal(BinTree BT)
:先序 --》根、左子树、右子树;
void InOrderTraversal(BinTree BT)
:中序 --》左子树、根、右子树;
void PostOrderTraversal(BinTree BT)
:后序 --》左子树、右子树、根;
void LevelOrderTraversal(BinTree BT)
:层次遍历,从上到下、从左到右
彻底二叉树:按从上至下、从左到右顺序存储,n个结点的彻底二叉树的结点父子关系
通常二叉树也能够采用这种结构,但会形成空间浪费……
/* c语言实现 */ typedef struct TreeNode *BinTree; typedef BinTree Position; struct TreeNode{ ElementType Data; BinTree Left; BinTree Right; }
# python语言实现 class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None
单个子节点用下图所示链表表示:
使用链表对整棵树的表示以下: