文章目录
一、树与二叉树
树(tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合(二维空间)。 它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶是朝下的。它具有以下的特点:
- 每个节点有零个或多个子节点;
- 没有父节点的节点称为根节点;
- 每一个非根节点有且只有一个父节点;
- 除了根节点外,每个子节点可以分为多个不相交的子树。
1.树的术语
2.树的种类
二叉树:每个节点最多含有两个子树的树称为二叉树。
完全二叉树:如果二叉树中除去最后一层节点都为满二叉树,即除了最后一层外每一层的节点都达到了最大(第一层一个节点,第二层两个节点,第三层四个节点),且最后一层的节点依次从左到右分布, 则此二叉树被称为完全二叉树。
满二叉树:如果二叉树中除了叶子结点,每个结点的度都为 2,则此二叉树称为满二叉树。如下图:
3.树的存储与表示
顺序存储(用的不多):将数据结构存储在固定的数组中,然在遍历速度上有一定的优势,但因所占空间比较大,是非主流二叉树。二叉树通常以链式存储。
链式存储:
4.常见树的应用场景
二、二叉树
1.二叉树的性质
2.二叉树的创建
二叉树节点的封装 https://blog.csdn.net/weixin_44568633/article/details/103749074
'''
二叉树创建:
与队列过程差不多
'''
class Node(object):
def __init__(self,item):
self.elem=item
self.lchild=None
self.rchild=None
class Tree(object):
'''二叉树'