树的基本概念
树(Tree)是一种简单的非线性结构。所有数据元素之间有明显的层次特性。
常用名词
根节点:没有父节点的节点。
叶子节点:没有子节点的节点。
节点的度:一个节点所拥有的后件个数称为该节点的读。
树的度:所有节点中最大的度。
树的深度:树的最大层次。
二叉树
概念
二叉树是一种每一个节点最多有两颗子树的树。
特性
1.在二叉树的第k层,最多有2^(k-1)个节点。
估计这一特性,能够计算二叉树的某一层,最多有多少个节点
2.深度为m的二叉树最多有2^m-1个节点
假设,每一层都达到最大值,然后根据如下等比数列求和公式求得。
3.在任意的二叉树中,度为0的节点(叶子节点)总比度为2的节点多一个。
例题:在二叉树中共有37个节点,度为1的节点是度为2的节点2倍,求叶子节点个数?
解析:
--------度数-----------个数-----------
---------0---------------x+1-----------
---------1---------------2x----------
---------2-----------------x--------
====>x=9;
====>度为0的节点数为10
4.具有n个节点的二叉树,其深度至少为[longn/long2]+1,其中[longn/long2]取其整数部分。
满二叉树
除了叶子节点,每个节点都有两个子节点。即k层上有
2^(k-1)个节点,若深度为m,则节点数为2^m-1
完全二叉树
完全二叉树:除了最后一层外,每一层上的节点数,均达到了最大值;在最后一层上只缺少右边若干个节点。
二叉树的遍历
前序遍历
遍历顺序是根---->左----->右
遍历结果:ABDECF
中序遍历
遍历顺序是左---->根----->右
遍历结果:DBEAFC
后序遍历
遍历顺序是左---->右---->根
遍历结果:DEBFCA
哈夫曼树
哈夫曼树是只有叶子和度为2的结点的二叉树
例题:
1.哈夫曼树中共有99个结点,则该树中有___个叶子结点;若采用二叉链表作为存储结构,则该树中有___个空指针域
解析:Huffman 树只有叶子和度为2的结点,因为n0 = n2 + 1,所以n0 + n0-1= 99,所以n0 = 50,也就是说是50个叶子,用二叉链表存储时每个叶子有2个空指针域,自然二叉链表确实是有100个空指针域
二叉链表
二叉树通常采用链式存储结构。每个存储节点,有两个指针域,故二叉树的链式存储结构又被称为二叉链表。将二叉树按照相应的遍历方式遍历后,采用二叉链表进行存储。
常见考点
1. 求二叉树中的节点个数
2. 求二叉树的深度
3. 前序遍历,中序遍历,后序遍历
4.分层遍历二叉树(按层次从上往下,从左往右)
5. 将二叉查找树变为有序的双向链表
6. 求二叉树第K层的节点个数
7. 求二叉树中叶子节点的个数
8. 判断两棵二叉树是否结构相同
9. 判断二叉树是不是平衡二叉树
10. 求二叉树的镜像
11. 求二叉树中两个节点的最低公共祖先节点
12. 求二叉树中节点的最大距离
13. 由前序遍历序列和中序遍历序列重建二叉树
14.判断二叉树是不是完全二叉树
2. 求二叉树的深度
3. 前序遍历,中序遍历,后序遍历
4.分层遍历二叉树(按层次从上往下,从左往右)
5. 将二叉查找树变为有序的双向链表
6. 求二叉树第K层的节点个数
7. 求二叉树中叶子节点的个数
8. 判断两棵二叉树是否结构相同
9. 判断二叉树是不是平衡二叉树
10. 求二叉树的镜像
11. 求二叉树中两个节点的最低公共祖先节点
12. 求二叉树中节点的最大距离
13. 由前序遍历序列和中序遍历序列重建二叉树
14.判断二叉树是不是完全二叉树
--------------2016-9-10-------------
下列关键字序列为堆的是()?
- 100,60,70,50,32,65
- 60,70,65,50,32,100
- 65,100,70,32,50,60
- 70,65,100,32,50,60
- 32,50,100,70,65,60
- 50,100,70,65,60,32
-
解析:我们所说的堆一般指二叉堆。二叉堆是完全二叉树或者是近似完全二叉树。
二叉堆满足二个特性:
1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。
2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。
它的左右子结点下标分别为2 * i + 1和2 * i + 2
故答案:A
--------------后续会继续添加-------------