笔试题中有关树的问题汇总

树的基本概念

树(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.判断二叉树是不是完全二叉树

--------------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
    --------------后续会继续添加-------------




    • 1
      点赞
    • 5
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值