
树
GZLUOLISHI
这个作者很懒,什么都没留下…
展开
-
7-34 哈夫曼编码译码
7-34 哈夫曼编码译码原创 2022-05-25 21:51:25 · 183 阅读 · 0 评论 -
7-33 构造哈夫曼树-无序输入分数 15(优先队列)
7-33 构造哈夫曼树-无序输入分数 15(优先队列)原创 2022-05-25 21:49:58 · 524 阅读 · 0 评论 -
7-31 二叉树查找结点及父结点
7-31 二叉树查找结点及父结点原创 2022-05-25 21:48:25 · 1736 阅读 · 1 评论 -
7-29 统计二叉树中具有度为1的结点数目
7-29 统计二叉树中具有度为1的结点数目原创 2022-05-25 21:46:42 · 3295 阅读 · 0 评论 -
7-26 列出所有祖先结点分数 20
7-26 列出所有祖先结点分数 20原创 2022-05-25 21:44:59 · 347 阅读 · 0 评论 -
7-25 顺序存储的二叉树的最近的公共祖先问题
7-25 顺序存储的二叉树的最近的公共祖先问题原创 2022-05-25 21:43:46 · 135 阅读 · 0 评论 -
7-63 哈夫曼编码 (30 分)
给定一段文字,如果我们统计出字母出现的频率,是可以根据哈夫曼算法给出一套编码,使得用此编码压缩原文可以得到最短的编码总长。然而哈夫曼编码并不是唯一的。例如对字符串"aaaxuaxz",容易得到字母 'a'、'x'、'u'、'z' 的出现频率对应为 4、2、1、1。我们可以设计编码 {'a'=0, 'x'=10, 'u'=110, 'z'=111},也可以用另一套 {'a'=1, 'x'=01, 'u'=001, 'z'=000},还可以用 {'a'=0, 'x'=11, 'u'=100, 'z'=101},原创 2022-02-11 23:12:23 · 321 阅读 · 0 评论 -
表达式树括号 (10 分)
请编写程序将表达式树按中缀表达式输出,并填加必要的括号,要求括号不能冗余,即保证正确运算次序所需的最少括号。如a∗(b+c)和a+(b−c)中的括号是必要的,而a+(b∗c)的括号则是冗余的。假定表达式树中的运算均为二元运算,只涉及加、减、乘、除运算。输入格式:输入为一行字符串,表示带空指针信息的表达式树先根序列,空指针信息用#表示,操作数为a-z的小写字母,运算符为+、-、*、/。输出格式:输出为一行字符串,表示填加必要括号后的中缀表达式。输入样例1:*a##+b##c##.原创 2022-02-11 14:24:34 · 741 阅读 · 0 评论 -
7-64 哈夫曼树 (25 分)
哈夫曼树,第一行输入一个数n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即weight,题目需要输出哈夫曼树的带权路径长度(WPL)。输入格式:第一行输入一个数n,第二行输入n个叶结点(叶结点权值不超过1000,2<=n<=1000)。输出格式:在一行中输出WPL值。输入样例:51 2 2 5 9输出样例:37#define _CRT_SECURE_NO_WARNINGS#include<stdi转载 2022-02-10 21:13:13 · 1272 阅读 · 0 评论 -
7-62 修理牧场 (25 分)
农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li个长度单位,于是他购买了一条很长的、能锯成N块的木头,即该木头的长度是Li的总和。但是农夫自己没有锯子,请人锯木的酬金跟这段木头的长度成正比。为简单起见,不妨就设酬金等于所锯木头的长度。例如,要将长度为20的木头锯成长度为8、7和5的三段,第一次锯木头花费20,将木头锯成12和8;第二次锯木头花费12,将长度为12的木头锯成7和5,总花费为32。如果第一次将木头锯成15和5,则第二次锯木头花费15,总花费为35(大于32原创 2022-02-10 20:51:07 · 86 阅读 · 0 评论 -
关于堆的判断 (25 分)
将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。命题分下列几种:x is the root:x是根结点; x and y are siblings:x和y是兄弟结点; x is the parent of y:x是y的父结点; x is a child of y:x是y的一个子结点。输入格式:每组测试第1行包含2个正整数N(≤1000)和M(≤20),分别是插入元素的个数、以及需要判断的命题数。下一行给出区间[−10000,10000]内的N个要被插入..原创 2022-02-10 14:20:17 · 123 阅读 · 0 评论 -
6-28 最小堆插入元素和删除堆顶(无哨兵元素) (20 分)
对于给定的最小堆(优先队列),分别实现插入元素和删除堆顶的函数。函数接口定义:int insertIntoHeap(struct Heap* h, int x); // 向堆中插入元素xint deleteMin(struct Heap* h, int* pElement); //将堆顶元素拷贝到pElement所指变量并删除堆顶元素其中,h、x和pElement为参数,h是堆结构体指针,x是待插入元素的值,pElement指向的变量用于存放删除的堆顶元素。堆结构体定义如下:s原创 2022-02-10 13:41:44 · 1366 阅读 · 0 评论 -
堆中的路径 (25 分)
将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。输入格式:每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。输出格式:对输入中给出的每个下标i,在一行中输出从H[i]到根结点的路径上的数据。数字间以1个空格分隔,行末不得有多余空格。输入样例:5 346 23 26 24 1原创 2022-02-10 11:15:11 · 101 阅读 · 0 评论 -
7-61 堆的操作 (20 分)
编写代码,实现最小堆(Min-Heap)的操作。输入格式:第一行是两个不大于1000的正整数N和K,用空格间隔。其中N是堆的容量,需创建一个容量为N的堆。接下来K行,是对这个堆的依次的K项插入或删除操作:用1 x表示插入元素x;用-1表示删除堆顶。接下来一行是一个不大于1000的正整数M,接下来一行是M个整数(在整型范围内),用空格间隔,要求将这M个整数组成的列表调整为一个最小堆。输出格式:对于第一个堆的K项操作,每次操作后,在一行中依次序打印堆元素,元素间使用1个空...原创 2022-02-10 10:40:24 · 963 阅读 · 1 评论 -
6-27 二叉搜索树的操作集 (30 分)
本题要求实现给定二叉搜索树的5种常用操作。函数接口定义:BinTree Insert( BinTree BST, ElementType X );BinTree Delete( BinTree BST, ElementType X );Position Find( BinTree BST, ElementType X );Position FindMin( BinTree BST );Position FindMax( BinTree BST );其中BinTree结构定义如下...原创 2022-02-09 17:28:10 · 86 阅读 · 0 评论 -
6-26 是否二叉搜索树 (25 分)
本题要求实现函数,判断给定二叉树是否二叉搜索树。函数接口定义:bool IsBST ( BinTree T );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data; BinTree Left; BinTree Right;};函数IsBST须判断给定的T是否二叉搜索树,即满足如下定义的二叉树:定原创 2022-02-09 16:53:33 · 100 阅读 · 0 评论 -
搜索树判断 (25 分)
对于二叉搜索树,我们规定任一结点的左子树仅包含严格小于该结点的键值,而其右子树包含大于或等于该结点的键值。如果我们交换每个节点的左子树和右子树,得到的树叫做镜像二叉搜索树。现在我们给出一个整数键值序列,请编写程序判断该序列是否为某棵二叉搜索树或某镜像二叉搜索树的前序遍历序列,如果是,则输出对应二叉树的后序遍历序列。输入格式:输入的第一行包含一个正整数N(≤1000),第二行包含N个整数,为给出的整数键值序列,数字间以空格分隔。输出格式:输出的第一行首先给出判断结果,如果输入的序列是某棵二原创 2022-02-09 13:10:58 · 87 阅读 · 0 评论 -
实验4-1 建立二叉搜索树并查找父结点 (20 分)
按输入顺序建立二叉搜索树,并搜索某一结点,输出其父结点。输入格式:输入有三行: 第一行是n值,表示有n个结点; 第二行有n个整数,分别代表n个结点的数据值; 第三行是x,表示要搜索值为x的结点的父结点。输出格式:输出值为x的结点的父结点的值。 若值为x的结点不存在,则输出:It does not exist. 若值为x的结点是根结点,则输出:It doesn't have parent.输入样例:2203020输出样例:It doesn't have parent原创 2022-02-09 12:11:54 · 1232 阅读 · 0 评论 -
7-55 奇怪的二叉树 (30 分)
大家上完这周的课,对二叉树一定有了自己的理解!最近小Z遇到了一颗奇怪的二叉树,想请求大家的帮助!这颗二叉树由N个互不相同的正整数组成,它有一个很重要的特性,就是每个节点的值一定会小于它左右孩子节点的值!比如像下面这样:现在小Z得到了一串这种二叉树的中序序列,但不知道怎么把这棵树还原出来,请大家帮帮他吧!输入格式:第一行包含一个正整数N(N<=50),表示奇怪二叉树的节点数!第二行包含N个正整数,表示奇怪二叉树的中序序列!(题目保证每个值都在int的范围内!)输出格式:原创 2022-02-07 22:23:02 · 733 阅读 · 0 评论 -
7-59 二叉树第k层最后一个结点 (10 分)
7-59 二叉树第k层最后一个结点 (10 分)原创 2021-12-09 17:28:02 · 607 阅读 · 0 评论 -
7-60 是否完全二叉搜索树 (30 分)
7-60 是否完全二叉搜索树 (30 分)原创 2021-12-07 16:08:42 · 236 阅读 · 0 评论 -
7-56 重构二叉树 (25 分)
给出两个字符串,分别表示二叉树的先序遍历(根、左子树、右子树)和中序遍历(左子树、根、右子树)的结果。例如,对于下面的二叉树,先序遍历结果是DBACEGF,中序遍历结果是ABCDEFG。假定二叉树的每个节点都用大写的字母标识,且对于同一棵二叉树,同一个字母不会用两次。现在请你根据给出的先序遍历和中序遍历,重构这棵二叉树。输入格式:输入包含一个或多个测试用例。每个测试用例一行,给出两个字符串,表示对二叉树进行先序遍历和中序遍历的结果。这两个字符串都是由大写字母组成(因此它们的长度不超过26原创 2021-12-03 23:17:27 · 254 阅读 · 0 评论 -
7-58 还原二叉树 (25 分)
给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。输入格式:输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。输出格式:输出为一个整数,即该二叉树的高度。输入样例:9ABDFGHIECFDHGIBEAC结尾无空行输出样例:5结尾无空行#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#i原创 2021-12-03 18:30:36 · 173 阅读 · 0 评论 -
7-54 二叉树的基本运算 (10 分)
7-54 二叉树的基本运算 (10 分)原创 2021-12-02 14:54:50 · 287 阅读 · 0 评论 -
7-52 二叉树查找结点及父结点 (5 分)
7-52 二叉树查找结点及父结点 (5 分)原创 2021-12-02 14:50:49 · 761 阅读 · 0 评论 -
【无标题】7-53 二叉树删除子树 (5 分)
7-53 二叉树删除子树 (5 分)原创 2021-12-02 14:47:13 · 163 阅读 · 0 评论