早教吧作业答案频道 -->其他-->
Pascal难题 最优二叉树现在有N个正整数,每一次去掉其中2个数a和b,然后加入一个数a*b+1,这样最后只剩下一个数p.要求求出最大的p记为maxp,最小的p记为minp,和他们的差K=maxp-minp.对于给定的数列,编
题目详情
Pascal难题 最优二叉树
现在有N个正整数,每一次去掉其中2个数a和b,然后加入一个数a*b+1,这样最后只剩下一个数p.要求求出最大的p记为maxp,最小的p记为minp,和他们的差K=maxp-minp.
对于给定的数列,编程计算出它的max,min和K.
输入文件(MAXMIN.IN):
第一行是数列的长度N(不超过50),以下N行,每行一个正整数(不超过2位).
输出文件(MAXMIN.OUT):
输出一共三行,每行一个整数,依次为max,min,K.
输入输出样例:
MAXMIN.IN
2
1
1
MAXMIN.OUT
2
2
0
现在有N个正整数,每一次去掉其中2个数a和b,然后加入一个数a*b+1,这样最后只剩下一个数p.要求求出最大的p记为maxp,最小的p记为minp,和他们的差K=maxp-minp.
对于给定的数列,编程计算出它的max,min和K.
输入文件(MAXMIN.IN):
第一行是数列的长度N(不超过50),以下N行,每行一个正整数(不超过2位).
输出文件(MAXMIN.OUT):
输出一共三行,每行一个整数,依次为max,min,K.
输入输出样例:
MAXMIN.IN
2
1
1
MAXMIN.OUT
2
2
0
▼优质解答
答案和解析
树的概念
树的递归定义如下:(1)至少有一个结点(称为根)(2)其它是互不相交的子树
1.树的度——也即是宽度,简单地说,就是结点的分支数.以组成该树各结点中最大的度作为该树的度,如上图的树,其度为3;树中度为零的结点称为叶结点或终端结点.树中度不为零的结点称为分枝结点或非终端结点.除根结点外的分枝结点统称为内部结点.
2.树的深度——组成该树各结点的最大层次,如上图,其深度为4;
3.森林——指若干棵互不相交的树的集合,如上图,去掉根结点A,其原来的二棵子树T1、T2、T3的集合{T1,T2,T3}就为森林;
4.有序树——指树中同层结点从左到右有次序排列,它们之间的次序不能互换,这样的树称为有序树,否则称为无序树.
5.树的表示
树的表示方法有许多,常用的方法是用括号:先将根结点放入一对圆括号中,然后把它的子树由左至右的顺序放入括号中,而对子树也采用同样的方法处理;同层子树与它的根结点用圆括号括起来,同层子树之间用逗号隔开,最后用闭括号括起来.如上图可写成如下形式:
(A(B(E(K,L),F),C(G),D(H(M),I,J)))
5. 2 二叉树
1.二叉树的基本形态:
二叉树也是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态:
(1)空二叉树——(a);
(2)只有一个根结点的二叉树——(b);
(3)右子树为空的二叉树——(c);
(4)左子树为空的二叉树——(d);
(5)完全二叉树——(e)
注意:尽管二叉树与树有许多相似之处,但二叉树不是树的特殊情形.
2.两个重要的概念:
(1)完全二叉树——只有最下面的两层结点度小于2,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树;
(2)满二叉树——除了叶结点外每一个结点都有左右子女且叶结点都处在最底层的二叉树,.
如下图:
完全二叉树
满二叉树
3.二叉树的性质
(1) 在二叉树中,第i层的结点总数不超过2^(i-1);
(2) 深度为h的二叉树最多有2h-1个结点(h>=1),最少有h个结点;
(3) 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,
则N0=N2+1;
(4) 具有n个结点的完全二叉树的深度为int(log2n)+1
(5)有N个结点的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系:
若I为结点编号则 如果I1,则其父结点的编号为I/2;
如果2*IN,则无左儿子;
如果2*I+1N,则无右儿子.
4.二叉树的存储结构:
(1)顺序存储方式
type node=record
data:datatype
l,r:integer;
end;
var tr:array[1..n] of node;
(2)链表存储方式,如:
type btree=^node;
node=record
data:datatye;
lchild,rchild:btree;
end;
5.普通树转换成二叉树:凡是兄弟就用线连起来,然后去掉父亲到儿子的连线,只留下父母到其第一个子女的连线.
6.二叉树的遍历运算(递归定义)
(1)先序遍历
访问根;按先序遍历左子树;按先序遍历右子树
(2)中序遍历
按中序遍历左子树;访问根;按中序遍历右子树
(3)后序遍历
按后序遍历左子树;按后序遍历右子树;访问根
例1.用顺序存储方式建立一棵有31个结点的满二叉树,并对其进行先序遍历.
program erchashu1;
var b:array[1..31] of char;
e:array[1..63] of byte;
n,h,i,k:integer;
procedure tree(t:integer);
begin
if e[t]=0 then exit
else
begin
write(b[t]);e[t]:=0;
t:=2*t;tree(t);
t:=t+1;tree(t);
end;
end;
begin
repeat
write('n=');readln(n);
until (n>0) and (n
树的递归定义如下:(1)至少有一个结点(称为根)(2)其它是互不相交的子树
1.树的度——也即是宽度,简单地说,就是结点的分支数.以组成该树各结点中最大的度作为该树的度,如上图的树,其度为3;树中度为零的结点称为叶结点或终端结点.树中度不为零的结点称为分枝结点或非终端结点.除根结点外的分枝结点统称为内部结点.
2.树的深度——组成该树各结点的最大层次,如上图,其深度为4;
3.森林——指若干棵互不相交的树的集合,如上图,去掉根结点A,其原来的二棵子树T1、T2、T3的集合{T1,T2,T3}就为森林;
4.有序树——指树中同层结点从左到右有次序排列,它们之间的次序不能互换,这样的树称为有序树,否则称为无序树.
5.树的表示
树的表示方法有许多,常用的方法是用括号:先将根结点放入一对圆括号中,然后把它的子树由左至右的顺序放入括号中,而对子树也采用同样的方法处理;同层子树与它的根结点用圆括号括起来,同层子树之间用逗号隔开,最后用闭括号括起来.如上图可写成如下形式:
(A(B(E(K,L),F),C(G),D(H(M),I,J)))
5. 2 二叉树
1.二叉树的基本形态:
二叉树也是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态:
(1)空二叉树——(a);
(2)只有一个根结点的二叉树——(b);
(3)右子树为空的二叉树——(c);
(4)左子树为空的二叉树——(d);
(5)完全二叉树——(e)
注意:尽管二叉树与树有许多相似之处,但二叉树不是树的特殊情形.
2.两个重要的概念:
(1)完全二叉树——只有最下面的两层结点度小于2,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树;
(2)满二叉树——除了叶结点外每一个结点都有左右子女且叶结点都处在最底层的二叉树,.
如下图:
完全二叉树
满二叉树
3.二叉树的性质
(1) 在二叉树中,第i层的结点总数不超过2^(i-1);
(2) 深度为h的二叉树最多有2h-1个结点(h>=1),最少有h个结点;
(3) 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,
则N0=N2+1;
(4) 具有n个结点的完全二叉树的深度为int(log2n)+1
(5)有N个结点的完全二叉树各结点如果用顺序方式存储,则结点之间有如下关系:
若I为结点编号则 如果I1,则其父结点的编号为I/2;
如果2*IN,则无左儿子;
如果2*I+1N,则无右儿子.
4.二叉树的存储结构:
(1)顺序存储方式
type node=record
data:datatype
l,r:integer;
end;
var tr:array[1..n] of node;
(2)链表存储方式,如:
type btree=^node;
node=record
data:datatye;
lchild,rchild:btree;
end;
5.普通树转换成二叉树:凡是兄弟就用线连起来,然后去掉父亲到儿子的连线,只留下父母到其第一个子女的连线.
6.二叉树的遍历运算(递归定义)
(1)先序遍历
访问根;按先序遍历左子树;按先序遍历右子树
(2)中序遍历
按中序遍历左子树;访问根;按中序遍历右子树
(3)后序遍历
按后序遍历左子树;按后序遍历右子树;访问根
例1.用顺序存储方式建立一棵有31个结点的满二叉树,并对其进行先序遍历.
program erchashu1;
var b:array[1..31] of char;
e:array[1..63] of byte;
n,h,i,k:integer;
procedure tree(t:integer);
begin
if e[t]=0 then exit
else
begin
write(b[t]);e[t]:=0;
t:=2*t;tree(t);
t:=t+1;tree(t);
end;
end;
begin
repeat
write('n=');readln(n);
until (n>0) and (n
看了 Pascal难题 最优二叉树...的网友还看了以下:
定义:a是不为1的有理数,把1-a分之一称为a的差倒数.如2的差倒数为1-2分之一=-1;-1的差 2020-05-16 …
小学数学综合计算题要按照我给的题型来回答问题。题型:1、口算(要有小数加减乘除和整数分数的加减乘除 2020-06-08 …
六年级口算题300道快我有急用我们数学老师让出六年级数学口算题300道要有小数的要有比例的要有分数 2020-06-27 …
15.全文介绍了哪些具有数学头脑的动物?它们分别具有什么样的“数学天才”?动物中的数学“天才”何京 2020-06-29 …
余数和除数小强在计算有余数和除法时,把被除数171错写成117,结果商比原来少3,但余数恰好相同, 2020-07-18 …
(2014•湖北一模)设m>3,对于项数为m的有穷数列{an},令bk为a1,a2,a3…ak(k≤ 2020-11-06 …
关于数学概率或数数就是组合有几种组合那种比如说要有五个数让你组合成三位数,而且里面数字不重复,那么要 2020-11-20 …
1.下列说法正确的是()A.两个有理数相加,就是把它们的绝对值相加B.绝对值相同的两个有理数相加,和 2020-12-31 …
关于有理数加减法,下列叙述正确的是1.两个负数相加,取负数,把绝对值相减2.零加整数,和为整数,负数 2021-02-02 …
算24点!最好要有负数,随便什么数都行.只要能算出24点,要求算式!要有负数!要有负数啊!例如3×( 2021-02-03 …