二叉树(一)
何为二叉树?
二叉树是结点的又穷集合,这个集合可以是空集,可以只有一个根结点,还可以是两棵不相交的二叉树,在二叉树中需要区分左子树和右子树。
二叉树特点
- 1.二叉树中至多关联连个后继结点,关联的后继结点分左右。
- 2.二叉树是一种递归结构。
- 3.对于非空二叉树,其结点集合非空,至少包含一个根结点,其子树可以为空。
- 4.空树:不包含任何结点的二叉树。
- 5.单点树:只包含一个结点(根结点)的二叉树。
- 6.兄弟结点:父结点相同的两个结点互为兄弟结点。
- 7.树叶结点:不包含子结点的结点。
- 8.分支结点:包含子结点(左右结点或只有一个子结点)的结点。
- 9.度:一个结点的子结点的个数称为该结点的度数。二叉树中节点的度为0,1,2。
- 10.层:二叉树根的层数为0,从根结点到任意一个结点的路径长为该结点的层数。
- 11.高度/深度:树中结点的最大层数为该树的高度。单点树的高度为0。
二叉树的五种形态
二叉树的性质
- 1.非空二叉树中第i层至多有 2^i 个结点。
- 2.高度为 h 的二叉树至多有 2^(h+1) - 1个结点。
满二叉树
- 1.如果二叉树中所有分支结点的度数都为2,则该树为满二叉树。
- 2.满二叉树的叶结点比分支结点多一个
完全二叉树
- 1.假设二叉树高度为h,如果第0层到第h-1层的结点都满,最下一层的结点不满,而所有结点在最左侧连续排列,空位在右边,则该树为完全二叉树。
常用
二叉树可作为 DFS和BFS两种搜索算法的基础数据结构,因为二叉树是一种递归的结构,在搜索算法中假设某种状态可选可不选时可抽象为二叉树,但是这种递归操作必须结合 回溯和 剪枝技巧保证算法的时间复杂度。 树形结构在计算机领域应用广泛,比如 linux 文件系统,MySQL数据库索引等。
预告
掌握二叉树可从以下几个方面入手:
- 1.二叉树的特性
- 2.二叉树实现
- 3.二叉树搜索
- 4.二叉树算法 leetcode
转载于:https://my.oschina.net/u/3757468/blog/1837096