二叉树的定义

树的概念 
子节点和父节点(是相对定义的): 
一棵树的根节点称为该树的子树的根节点的父节点 
子树的根是树根的子节点
边:从父节点到子节点的连线(边有方向)
兄弟节点:父节点相同的节点互为兄弟节点
树叶、分支节点:没有子节点的节点称为树叶,树中的其余节点称为分支节点(分支节点可只有一个分支)
祖先和子孙:基于父节点/子节点关系和传递性,可以确定相应的传递关系,称为祖先关系或子孙关系
度数:一个节点的子节点个数称为该节点的度数
路径、路径长度: 
从一个祖先节点到其子孙节点的一系列边称为树中一条路径(从一棵树的根到树中任一个节点都有唯一路径) 
路径中边的条数称为路径的长度,认为每个节点到自身有长0的路径
节点的层数: 
树根到节点的路径长度是该节点的层数 
节点都有层数,根所在的层为0
高度(或深度): 
树的高度或深度是树中节点的最大层数(最长路径的长度)加1 
空树高度为0,只有根节点的树高度为1
二叉树的定义:

二叉树是一种树形结构: 
特点是与每个节点关联的子节点至多有两个(可为0,1,2) 
每个节点的子节点有关联位置关系
定义: 
二叉树是节点的有限集合,该集合或为空集,或由一个根元素和两棵不相交的二叉树组成(递归定义) 
二叉树的两棵子树分别称为它的左子树和右子树
二叉树的5种基本形态: 

满的和完全的二叉树: 
满二叉树:树中每个分支节点(非叶节点)都有两棵非空子树
完全二叉树:除最下两层外,其余节点度数都是2,如果最下面的节点不满,则所有空位都在右边,左边没有空位,如下图 

扩充二叉树(由已有非空二叉树生成的一种二叉树): 
是原二叉树的最小节点扩充,使原树中所有节点的度数都变成2 

二叉树的性质: 
性质1. 非空二叉树第 i 层上至多有 2i 个结点(i ≥ 0)
性质2. 高度为 k 的二叉树至多有 2k-1 个结点(k ≥ 0)
性质3. 对任何非空二叉树 T,若其叶结点个数为 n0,度数为 2 的结点 
个数为 n2,则n0 = n2 + 1
性质4. n 个结点的完全二叉树的高度 k = ⎡log2(n+1)⎤
性质5. 满二叉树里的叶结点比分支结点多一个
二叉树的数据结构 
基本操作 
创建二叉树 
一棵二叉树或为空(用 None 表示),或是两棵已有二叉树和要存在树根结点的一项数据,构造起的根结点代表构造出的二叉树: 
BiTree(dat, left, right) 
判断树空:is_empty(bitree) 
访问操作,访问二叉树的组成成分: 
访问二叉树的根结点数据元素:data() 
取得一棵二叉树的左右子树:right(),left()
 

你可能感兴趣的:(数据结构,数据结构)