数据结构-二叉树
1、完全二叉树(complete binary tree)的定义
若设二叉树的深度为h,除第h层外,其他各层(1到h-1)的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这就是完全二叉树
2、满二叉树的定义(full binary tree)
满二叉树的节点要么是叶子节点,度为0,要么是度为2的节点,不存在度为1的节点
3、二叉树的基本性质
节点的度:节点的子节点的数量为该节点的度。在完全二叉树中,节点的度最多为2,最少为0
叶子节点:度为0的节点为叶子节点
4、树里面的基本概念
节点的高度:节点到叶子节点的最长路径(边数)
节点的深度:根节点到这个节点所经历的边的个数
节点的层数:节点的深度+1
树的高度:根节点的高度
这几个概念的区分:计算节点的高度时,起点从叶子节点为水平线,进行计算,叶子节点的高度为0;计算节点的深度时,起点从根节点为水平线,进行计算,根节点的深度为0;层数类似深度,起点从根节点为水平线,进行计算,根节点的层数为1
5、树的存储方式
两种方式:链式存储法,大部分的二叉树都是通过这个结构来实现和基于数组的顺序存储法,完全二叉树使用数组存储,比较省空间,存储的规律为:根节点存储下标为数组的索引1的位置,节点下标为i,其左子节点存储位置为2*i,右子节点存储位置为2*i+1;
6、二叉树的遍历方式
前序遍历是指:对于树中的任意节点来说,先打印该节点,然后再打印它的左子树,最后打印它的右子树
中序遍历是指:对于树中的任意节点来说,先打印它的左子树,然后再打印它本身,最后打印它的右子树
后序遍历是指:对于树中的任意节点来说,先打印它的左子树,然后再打印它的右子树,最后打印这个节点本身
层序遍历是指:按照层的方式遍历完一层的节点,再遍历下一层的节点,这里需要用到一个数据结构队列