HBC50511传送门,排序加分二叉树题解

上官魅 算法基础篇 35 0
想要检验自己的编程水平?来试试全网最全C++题库,让您在挑战中不断进步。
设一个n个节点的二叉树treemathrm{tree}tree的中序遍历为(1,2,3,,n)(1,2,3, cdots,n)(1,2,3,,n),其中数字1,2,3,,n1,2,3, cdots,n1,2,3,,n为节点编号,每个节点都有一个分数(均为正整数),记第i个节点的分数为did_idi,treemathrm{tree}tree及它的每个子树都有一个加分,任一棵子树subtreemath

设一个n个节点的二叉树treemathrm{tree}tree的中序遍历为(1,2,3,⋯ ,n)(1,2,3, cdots,n)(1,2,3,⋯,n),其中数字1,2,3,⋯ ,n1,2,3, cdots,n1,2,3,⋯,n为节点编号。每个节点都有一个分数(均为正整数),记第i个节点的分数为did_idi​,treemathrm{tree}tree及它的每个子树都有一个加分,任一棵子树subtreemathrm{subtree}subtree(也包含treemathrm{tree}tree本身)的加分计算方法如下: 记subtreemathrm{subtree}subtree的左子树加分为l,右子树加分为r,subtreemathrm{subtree}subtree的根的分数为a,则subtreemathrm{subtree}subtree的加分为: l×r+al times r+al×r+a 若某个子树为空,规定其加分为1,叶子的加分就是叶节点本身的分数。不考虑它的空子树。 试求一棵符合中序遍历为(1,2,3,⋯ ,n)(1,2,3, cdots,n)(1,2,3,⋯,n)且加分最高的二叉树treemathrm{tree}tree。 要求输出: treemathrm{tree}tree的最高加分;treemathrm{tree}tree的前序遍历。输入格式 第一行一个整数n表示节点个数; 第二行n个空格隔开的整数,表示各节点的分数。

HBC50511传送门,排序加分二叉树题解
-第1张图片-东莞河马信息技术
(图片来源网络,侵删)
全网最全C++题库,助您挑战自我,突破极限,成为编程领域的佼佼者!

标签: HBC50511传送门 排序加分二叉树题解