5 - 1 判断题

news2024/11/20 8:33:08

1.一棵有124个结点的完全二叉树,其叶结点个数是确定的。T


什么是完全二叉树?(会的可以跳过)

完全二叉树:一棵深度为k的有n个结点的二叉树,对其结点按从上至下,从左至右的顺序进行编号,如果编号为i的结点与满二叉树中编号为i的结点在二叉树的位置相同,则这棵二叉树为完全二叉树。

在这里插入图片描述

因为一棵非空二叉树的第i层上最多有  2的(i-1)次方个结点,所以可以推广到完全二叉树

性质1:一棵完全二叉树的第i层上最多有  2的(i-1) 次方个结点

因为一棵深度为k的二叉树中,最多有  2的k次方-1  个结点,也可以推广到完全二叉树

性质2:一棵深度为k的完全二叉树中,最多有  2的k次方-1  个结点

性质3:具有n个结点的完全二叉树的深度k为 log₂n向下取整,再+ 1。

例:有5个结点,log₂n向下取整为2,再+1为3。


性质3可得,log₂124 向下取整  =6,再+1为7。

所以该二叉树的深度为7。

性质2可得,深度为6的完全二叉树有2的6次方-1个结点,即63个结点。

总共有124个结点,那么还剩下124-63=61个结点,分布在第7层。

性质1可得,第7层最多有2的(i-1)次方个结点,也就是2的6次方,最多64个,可以容纳下61个结点。

下面计算叶结点,第7层的结点全是叶节点,有61个,剩下的叶节点在第6层。

第7层的每2个结点是第6层的1个结点的左右孩子,因为61是奇数,所以最后还剩下一个结点对应第6层的一个结点。

(61-1)/2=30,即第6层有30个结点有左右孩子,有1个结点有1个孩子,第六层有2的5次方个结点,也就是32个,那么第6层没有孩子的结点有32-30-1=1个,这个结点是叶节点之一。

所以该完全二叉树共有61+1=62个叶节点

2.二叉树中序线索化后,不存在空指针域。 F

(无特殊说明的话,是没有头结点的,如果有头结点的话,为T)

第一个结点无前驱,最后一个结点无后继。

构造一个二叉树就偷点懒,用这个的结果(这叫复习/doge):

4-14 还原二叉树&&4-15 根据后序和中序遍历输出先序遍历

生成的树:

 咱们就中序线索化这个。

代码:(有头结点的中序线索二叉树,不存在空指针域)

#include<iostream>

using namespace std;

typedef struct Tnode* Tree;
typedef struct Tnode{
    char data;
    Tree lchild;
    Tree rchild;
    unsigned ltag;
    unsigned rtag;
};

Tree get(char s1[], char s2[], int n) {
    if (n <= 0) {
        return NULL;
    }
    Tree tree = (Tree)malloc(sizeof(struct Tnode));
    tree->lchild = NULL;
    tree->rchild = NULL;
    tree->ltag = 0;
    tree->rtag = 0;
    tree->data = s1[0];

    int i;
    for (i = 0; s2[i] != s1[0]; i++);
    tree->lchild = get(s1+1, s2, i);
    tree->rchild = get(s1 + i + 1, s2 + i + 1, n - i - 1);
    return tree;

}

int len(Tree tree) {
    if (tree == NULL) {
        return 0;
    }
    int left = len(tree->lchild);
    int right = len(tree->rchild);
    return (left >= right ? left : right) + 1;
}

Tree pre;

void InTreading(Tree tree) {
    if (tree) {
        InTreading(tree->lchild);
        if (tree->lchild == NULL) {
            tree->ltag = 1;
            tree->lchild = pre;
        }
        if (pre->rchild == NULL) {
            pre->rtag = 1;
            pre->rchild = tree;
        }
        pre = tree;
        InTreading(tree->rchild);
    }
}


Tree InOrderThr(Tree tree) {
    Tree head = (Tree)malloc(sizeof(struct Tnode));
    head->lchild = 0;
    head->rtag = 1;
    head->rchild = head;

    if (!tree) {
        head->lchild = head;
    }
    else {
        head->lchild = tree;
        pre = head;
        InTreading(tree);

        pre->rchild = head;
        pre->rtag = 1;
        head->rchild = pre;
    }
    return head;
}



Tree InpostNode(Tree p) {
    Tree post;
    post = p->rchild;
    if (p->rtag != 1) {
        while (post->ltag == 0) {
            post = post->lchild;
        }
    }
    return post;
}

void Search(Tree tree) {
    Tree temp;
    temp = tree->lchild;
    while (temp->ltag == 0 && temp != tree) {
        temp = temp->lchild;
    }
    while(temp!=tree){
        printf("%c ", temp->data);
        temp = InpostNode(temp); 
    }
}

int main()
{
    int n;
    cin >> n;
    char s1[51], s2[51];
    for (int i = 0; i < n; i++) {
        cin >> s1[i];
    }
    for (int i = 0; i < n; i++) {
        cin >> s2[i];
    }
    Tree st= get(s1, s2, n);
    st = InOrderThr(st);
    Search(st);
    return 0;
}

3.对N(≥2)个权值均不相同的字符构造哈夫曼树,则树中任一非叶结点的权值一定不小于下一层任一结点的权值。T

解析:考察哈弗曼树的构造方法,哈弗曼树的构造思想就是贪心的思想,每次选择权值最小的两个节点来形成新的节点,自底向上建树,因此对于一棵哈弗曼树来说,树中任一非叶节点的权值一定不小于下一层的任意节点的权值。

在构造哈夫曼树时会遇到两种情况,一种是造成树的高度增加,一种是不增加:

高度增加的情况:1,2,3,4。即每向树增加结点,树高加一

 

高度不增加的情况:比如6,7,8,9。在增加8和9时,树高不会立刻增加(就当成是树吧)

无论是这两种那种情况,都满足题意 

 

4.哈夫曼编码是一种最优的前缀码。对一个给定的字符集及其字符频率,其哈夫曼编码不一定是唯一的,但是每个字符的哈夫曼码的长度一定是唯一的。T

哈夫曼编码一般左0右1

比如这个哈夫曼树:

 哈夫曼编码:

A:00

B:01

C:1

我们在构造时也可能会这样:

 这样构造也是对的,但是哈夫曼编码就不一样了:

 哈夫曼编码:

A:10

B:11

C:0

所以,对一个给定的字符集及其字符频率,哈夫曼编码不一定是唯一的。

因为无论怎么构造,对一个给定的字符集及其字符频率,不同的哈夫曼树的“样子”只是交换左右子树造成的,所以每个字符的哈夫曼码的长度一定是唯一的。(哈夫曼码的长度即该字符所在叶节点的树的分叉的高)

5.对于一个有N个结点、K条边的森林,不能确定它共有几棵树。F

对于一棵树,有这样的性质:节点数-边数=1。

例如:

 有5个结点,4条边

森林是0棵或有限棵不相交的树的集合,比如森林中有3棵树,那么每棵树的结点数比边数多1,那么三棵树的总结点数就比总边数多3。由此可得,对于一个有N个结点、K条边的森林,它有N-K棵树

6.树的后根序遍历序列等同于它所对应二叉树的中序遍历序列。T

树的先序遍历与其转换成二叉树的先序遍历的结果相同;

树的后序遍历与其转换成二叉树的中序遍历的结果相同;

7.二叉树可以用二叉链表存储,树无法用二叉链表存储。F

一个结点的第一个孩子(长子)作为该节点的左孩子,这个结点的兄弟这个结点作为右孩子。

 

8.将一棵树转成二叉树,根结点没有左子树。F

根节点没有兄弟,所以根节点没有右子树

9.用邻接矩阵法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关。T

占用的存储空间数只与图中结点个数有关,而与边数无关,空间代价为O(n*n);

10.用一维数组G[]存储有4个顶点的无向图如下:

G[] = { 0, 1, 0, 1, 1, 0, 0, 0, 1, 0 }

则顶点2和顶点0之间是有边的。T

下三角矩阵

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/29204.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习大数据需要具备什么基础么?

Python优势明显&#xff0c;应用领域超多 如果要推荐一种人人都能掌握的编程语言&#xff0c;应该没有比Python更合适的了。 Python 简单易学&#xff0c;用途广泛&#xff0c;适合零基础入门&#xff0c;在编程语言排名上升最快&#xff0c;能完成数据挖掘、机器学习、实时计…

SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.25 RocketMQ 安装

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇5 整合第三方技术5.25 RocketMQ 安装5.25.1 RocketMQ 下载5.25.2 安装…

眼见为实:关于微服务熔断这几个知识点,你可能理解错了

“ 微服务熔断&#xff0c;是当微服务中某个子服务&#xff0c;发生异常不可用&#xff0c;其他服务在进行远程调用时不能正常访问而一直占用资源&#xff0c;导致正常的服务也发生资源不能释放而崩溃&#xff0c;这时为了不造成整个微服务群瘫痪&#xff0c;进行的保护机制” …

漏洞分析|Apache Airflow Pinot Provider 命令注入漏洞

项目介绍 Airflow 是一个使用 python 语言编写的 data pipeline 调度和监控工作流的平台。Airflow 是通过 DAG&#xff08;Directed acyclic graph 有向无环图&#xff09;来管理任务流程的任务调度工具&#xff0c; 不需要知道业务数据的具体内容&#xff0c;设置任务的依赖关…

【头歌实验】四、Python分支结构

文章目录>>>第1关&#xff1a;判断闰年任务描述案例分析相关知识条件表达式分支语句测试说明参考答案>>>第2关&#xff1a;计算快递费用任务描述案例分析相关知识分支结构向上取整的函数ceil测试说明参考答案>>>第3关&#xff1a;成绩等级判定任务描…

同惠TH2830精密LCR数字电桥性能特点

TH283X系列是新一代低预算成本&#xff0c;高性能紧凑型LCR数字电桥&#xff0c;采用最新工艺和高密度电路设计&#xff0c;浓缩大型LCR测试仪的精华、紧凑、小巧。取消传统机械电源开关&#xff0c;采用软件控制电源开关。0.05%的基本精度和良好的测试稳定性可与高端机型媲美。…

关于环2数字资产html网页设计

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | | HTML期末大学生网页设计作业 HTML&#xff1a;结构 CSS&#xff1a;样式 在操作方面上运用了html5和css3&#xff0c; 采用了divcss结构、表单、超…

下一代Ajax技术 — Fetch的学习与使用

一、初识fetch Fetch被称为下一代Ajax技术,采用Promise方式来处理数据。是一种简洁明了的API&#xff0c;比XMLHttpRequest更加简单易用。 XMLHttpRequest 我们先来看看使用纯XMLhttpRequest来实现一次简单ajax请求的代码&#xff1a; //获取XMLHttpRequest实例对象 const x…

TypeScript(三)面向对象

TypeScript 类的定义 我们可以使用class关键字来定义一个类&#xff1b; 我们可以声明类的属性&#xff1a;在类的内部声明类的属性以及对应的类型 如果类型没有声明&#xff0c;那么它们默认是any的&#xff1b; 我们也可以给属性设置初始化值&#xff1b; 在默认的strictPr…

MSG企业行·AI+医疗专场成功举办!!昇思MindSpore助力智慧医疗深度发展!

【MSG企业行AI医疗】 11月19日下午&#xff0c;【MSG企业行AI医疗】线上交流会成功举办&#xff01; 昇思MindSpore开源社区联合大连人工智能生态创新中心、深圳大学、武汉理工大学、摩赛恩科技、连心医疗、众享未来融合研究院&#xff0c;邀请到了5人工智能与医疗行业嘉宾&a…

利用navicat定时传输数据到另一个库

需求&#xff1a;每天定时6点&#xff0c;12点&#xff0c;18点将SQLserver的数据推送到mysql库中 之前就看到navicat有个自动运行&#xff08;有的版本叫计划&#xff09;&#xff0c;但是不会用&#xff0c;刚好趁这个机会学一学 提前说一点&#xff0c;可能需要先换成admin…

antd:ConfigProvider+getPopupContainer解决筛选框遮挡问题(及其他浮层问题)

一. 问题场景二. 解决方案三. 代码示例一. 问题场景 当表格高度太低&#xff08;下图业务场景出现在数据条数太少时&#xff09;&#xff0c;column中有筛选框&#xff0c;可能会出现筛选框被遮挡的问题&#xff1a; 这是因为filter的下拉菜单渲染在table的表头栏&#xff0…

运算放大器的理解与应用

运算放大器的理解与应用 运算放大器简称运放&#xff0c;由于早期应用于模拟计算机中&#xff0c;用以实现数学运算&#xff0c;故得名“运算放大器”。主要是用在模拟电路中&#xff0c;比如放大器、比较器、模拟运算器&#xff0c;是电子工程师经常要用到的器件。运算放大器…

145646-22-6|表位肽EQKLISEEDL

c-Myc Peptide Trifluoroacetate 是一种合成肽&#xff0c;与人 c-myc 蛋白的 C-末端氨基酸 (410-419) 相对应&#xff0c;参与调控与生长有关的基因的转录过程。c-Myc Peptide Trifluoroacetate is a synthetic peptide corresponding to the C-terminal amino acids (410-419…

开源共建 | 中国移动冯江涛:ChunJun(原FlinkX)在数据入湖中的应用

ChunJun&#xff08;原FlinkX&#xff09;是一个基于 Flink 提供易用、稳定、高效的批流统一的数据集成工具。2018年4月&#xff0c;秉承着开源共享的理念&#xff0c;数栈技术团队在github上开源了FlinkX&#xff0c;承蒙各位开发者的合作共建&#xff0c;FlinkX得到了快速发展…

Spring Security验证码配置化开发

背景 在前两篇文章中给大家介绍了Spring Security的认证流程&#xff0c;包含对项目的定制化处理&#xff0c;可以明白security的设计还是比较强大的&#xff0c;通过一系列的过滤器注册的过滤器链&#xff0c;对流程进行链式的处理。 今天介绍一种以配置器的方式处理验证码生…

Day11--配置tabBar效果

1.创建tabBar分支 我的操作&#xff1a; 1》在其根路径下按住“shift”和鼠标右键进入powerShell界面&#xff0c;然后输入创建一个分支tabBar. ****************************** ****************************** ****************************** ****************** 2.创建ta…

生产质量管理系统有哪些功能?

随着中国市场经济的快速发展&#xff0c;中国产品正经历着“中国制造”向“中国创造”的转变,在这个过程中&#xff0c;企业经营也逐渐从低成本生产管理向质量经营方向发展&#xff0c;企业已经认识到质量的重要性&#xff0c;企业对质量管理的有效性也提出了更高的要求。 作为…

【Servlet】5:详解响应对象 HttpServletResponse

目录 | 响应对象 HttpServletResponse接口 HttpServletResponse的基本概述 响应对象返回 String 给Browser & 中文乱码问题 响应对象返回 int 给Browser 响应对象 解析HTML标签后 返回给Browser 本文章属于后端全套笔记的第三部分 &#xff08;更新中&#xff09;【后…

UI和UI有什么不同,是如何协助的

UX(用户体验)和UI&#xff08;用户界面&#xff09;是一个常用的术语。然而&#xff0c;尽管有复杂的联系&#xff0c;但网页设计的两个领域是两个不同的东西。事实上&#xff0c;有可能有一个用户界面优秀但用户体验差的网站。因此&#xff0c;了解UX和UI良好的网页设计非常重…