1-8 最宽层次结点数分数 4
作者 DS课程组
单位 临沂大学
本题要求实现一个函数,返回给定的二叉树的中最宽层次的结点数,这里最宽层次指的是该层上的结点最多。
函数接口定义:1int MaxWidth(BiTree T);
T是二叉树树根指针,MaxWidth函数统计T中每层结点数并返回最大值,空树返回0。
其中BinTree结构定义如下:
123456typedef char ElemType;typedef struct BiTNode{ ElemType data; struct BiTNode *lchild, *rchild;}BiTNode, *BiTree;
裁判测试程序样例:123456789101112131415161718192021#include <stdio.h>#include <stdlib.h>typedef char ElemType;typedef struct BiTNode{ ElemType data; struct BiTNode *lchild, *rchild ...
1-7 二叉树的非递归遍历分数 5
作者 陈越
单位 浙江大学
本题要求用非递归的方法实现对给定二叉树的 3 种遍历。
函数接口定义:123void InorderTraversal( BinTree BT );void PreorderTraversal( BinTree BT );void PostorderTraversal( BinTree BT );
其中BinTree结构定义如下:
12345678typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data; BinTree Left; BinTree Right; int flag;};
要求 3 个函数分别按照访问顺序打印出结点的内容,格式为一个空格跟着一个字符。
此外,裁判程序中给出了堆栈的全套操作,可以直接调用。
裁判测试程序样例:1234567891011121314151617181920212223242526272829303132333435363 ...
1-6 层次遍历分数 3
作者 黄龙军
单位 绍兴文理学院
要求实现函数,输出二叉树的层次遍历序列,可借助STL(标准模板库)之queue(队列)。二叉树采用二叉链表存储,结点结构如下:
1234struct BiTNode { // 结点结构 char data; // 结点数据域 BiTNode *lchild, *rchild; // 左、右孩子指针};
函数接口定义:1void LevelTraverse(BiTNode* T);
其中参数 T是指向二叉树根结点的指针。
裁判测试程序样例:1234567891011121314151617181920212223242526272829303132333435363738#include<iostream>#include<queue>#include<string>using namespace std;struct BiTNode { char data; BiTNode ...
1-5 先序输出叶结点分数 4
作者 陈越
单位 浙江大学
本题要求按照先序遍历的顺序输出给定二叉树的叶结点。
函数接口定义:1void PreorderPrintLeaves( BinTree BT );
其中BinTree结构定义如下:
1234567typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data; BinTree Left; BinTree Right;};
函数PreorderPrintLeaves应按照先序遍历的顺序输出给定二叉树BT的叶结点,格式为一个空格跟着一个字符。
裁判测试程序样例:12345678910111213141516171819202122232425#include <stdio.h>#include <stdlib.h>typedef char ElementType;typedef struct TNode *Position;typedef Position ...
1-4 二叉树求深度和叶子数分数 3
作者 鲁法明
单位 浙江大学
编写函数计算二叉树的深度以及叶子节点数。二叉树采用二叉链表存储结构
函数接口定义:12int GetDepthOfBiTree ( BiTree T);int LeafCount(BiTree T);
其中 T是用户传入的参数,表示二叉树根节点的地址。函数须返回二叉树的深度(也称为高度)。
裁判测试程序样例:1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556//头文件包含#include<stdlib.h>#include<stdio.h>#include<malloc.h>//函数状态码定义#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -1#define INFEASIBLE ...
1-3 求二叉树的高度分数 5
作者 YJ
单位 西南石油大学
输入二叉树的先序序列以创建二叉树,并求出该二叉树的高度。
函数接口定义:1int Depth(BiTree Tree);
其中 Tree 是用户传入的参数,代表指向二叉树根节点的指针。
裁判测试程序样例:1234567891011121314151617181920212223242526272829303132333435#include<stdio.h>#include<malloc.h>#define len sizeof(struct BiTNode )typedef struct BiTNode{ char data; //数据域 struct BiTNode *lchild; //左孩子指针 struct BiTNode *rchild; //右孩子指针}BiTNode,*BiTree; void creat(BiTree &Tree)//构建二叉树{ char ch; scanf("%c",&am ...
树和二叉树1.树的定义树(Tree)是n(n>=0)个结点的有限集,它或为空树(n= 0); 或为非空树,对于非空树T:
(1)有且仅有一个称之为根的结点;(2)除根结点以外的其余结点可分为 m(m>O)个互不相交的有限集 T1 T2 , …Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。
2.树的基本术语
(1)结点:树中的一个独立单元。包含一个数据元素及若于指向其子树的分支,如图 (b) 中的 A 、 B 、 C 、 D 等.(下面术语中均以图 (b) 为例来说明)
(2)结点的度:结点拥有的子树数称为结点的度。例如,A的度为 3, C的度为l, F的度为0。
(3)树的度:树的度是树内各结点度的最大值。图 (b) 所示的树的度为3。
(4) 叶子: 度为 0 的结点称为叶子或终端结点。结点 K 、 L 、 F 、 G 、 M 、 I 、 J都是树的叶子。
(5) 非终端结点:度不为 0 的结点称为非终端结点或分支结点。除根结点之外,非终端结点也称为内部结点。
(6)双亲和孩子:结点的子树的根称为该结点的孩子,相应地,该结点称为孩子的双亲。例 ...
1-2 二叉树求结点数分数 3
作者 鲁法明
单位 山东科技大学
编写函数计算二叉树中的节点个数。二叉树采用二叉链表存储结构。
函数接口定义:1int NodeCountOfBiTree ( BiTree T);
其中 T是二叉树根节点的地址。
裁判测试程序样例:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354//头文件包含#include<stdlib.h>#include<stdio.h>#include<malloc.h>//函数状态码定义#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -1#define INFEASIBLE -2typedef int Status;//二叉链表存储结构定义typedef int TElemType;typede ...
1-1 统计度为1的结点数分数 3
作者 黄龙军
单位 绍兴文理学院
要求实现函数,统计并返回二叉树中的度为1的结点数。二叉树采用二叉链表存储,结点结构如下:
1234struct BiTNode { // 结点结构 char data; // 结点数据域 BiTNode *lchild, *rchild; // 左、右孩子指针};
函数接口定义:1int CountSingle(BiTNode *T);
其中参数 T是指向二叉树根结点的指针。
裁判测试程序样例:123456789101112131415161718192021222324252627282930313233343536#include<iostream>#include<string>using namespace std;struct BiTNode { char data; BiTNode *lchild, *rchild;};int CountSingle(B ...
2-12 链式队列的3个操作分数 6
作者 陈越
单位 浙江大学
请编写程序,将 n 个整数顺序压入容量无限制的(链式)队列,随后执行 n+1 次取队首并出队的操作。
输入格式:输入首先在第一行给出正整数 n;随后一行给出 n 个 int 范围内的整数,数字间以空格分隔。题目保证有 n 个元素的(链式)队列不会超过题目的空间限制。
输出格式:将输入的n 个整数顺序压入队列,随后执行 n+1 次取队首并出队的操作,输出取出的元素的值,每行一个。注意:当队列为空时,取队首和出队操作应该不执行,并在一行中输出错误信息 错误:队列为空。。空队列取队首应返回 -1。
输入样例:1251 2 3 4 5
输出样例:1234567812345错误:队列为空。-1错误:队列为空。
我的答案
逆天,跟上个题几乎一样,答案居然对了,虽然没用链队列
123456789101112131415161718192021222324252627282930#include <iostream>#include <queue>using namespace std;int mai ...


