没有天生的信心,只有不断培养的信心。
/**
*@author StormMaybin
@Date 2016-07-17
*/
上上一篇文章总结了一下线性表,今天就来总结一下数据结构中非线性部分,非线性数据结构包括树图以及网!今天我们先来看看二叉树!二叉树是一种特殊的树结构。在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。
基本概念:
二叉树是很重要的数据结构,要想搞清楚二叉树,先要对基本概念了解透彻。
- 完全二叉树:若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。
- 满二叉树:除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。
- 平衡二叉树:平衡二叉树又被称为AVL树(区别于AVL算法),它是一棵二叉排序树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
- 树的结点:包含一个数据元素及若干指向子树的分支;
- 孩子结点:结点的子树的根称为该结点的孩子;
- 双亲结点:B 结点是A 结点的孩子,则A结点是B 结点的双亲;
- 兄弟结点:同一双亲的孩子结点; 堂兄结点:同一层上结点;
- 祖先结点: 从根到该结点的所经分支上的所有结点子孙结点:以某结点为根的子树中任一结点都称为该结点的子孙;
- 结点层:根结点的层定义为1;根的孩子为第二层结点,依此类推;
- 树的深度:树中最大的结点层;
- 结点的度:结点子树的个数;
- 树的度: 树中最大的结点度;
- 叶子结点:也叫终端结点,是度为 0 的结点;
- 分枝结点:度不为0的结点;
- 有序树:子树有序的树,如:家族树;
- 无序树:不考虑子树的顺序 ;
重要性质:
说完了基本概念,现在就来看看二叉树都有什么性质。
- 在非空二叉树中,第i层的结点总数不超过, i>=1;
这个没什么可解释的,第二层是2个,第三层是4个,第四层是8个······以此类推。
- 深度为h的二叉树最多有个结点(h>=1),最少有h个结点;
由性质1可知,因为第i层的结点数为,依次累加可得到这个性质!
- 对于任意一棵二叉树