本题要求我们处理一个表示调用栈的树形结构,树的每个节点包含一个样本数量,节点间通过分隔符 -1 来标识。输入包含树的节点总数和层序遍历的序列化数据,输出需要更新每个节点的样本数量,使其等于该节点自身的样本数量加上所有子节点的样本数量之和。通过解析输入构建树,计算新样本数量后,按相同格式输出更新后的数据。
就是很简单的树的递归求和,dfs一遍即可,输入输出比较抽象注意处理
在一次软件性能采样中,每条被记录的热点调用栈都有一个样本数量。这些调用栈可以构成一棵树:每个结点表示一条调用栈,结点的初始数值就是该调用栈自身被采样到的样本数量。若一条调用栈是另一条调用栈继续向下调用得到的,则称前者为后者的子调用栈,并在树中作为子结点。
比如在 A->B->C这条调用中,包含3个调用栈 A、A->B、A->B->C,在调用栈的结构树中 A->B 的父节点是 A, A->B->C的父节点是 A->B。
现在需要刷新这棵热点调用栈树的数值。对于任意结点,刷新后的数值等于该结点自身的初始样本数加上其所有子调用栈对应结点的初始样本数总和。换句话说,每个结点需要更新为整棵子树中所有结点样本数的和。
树以带分隔符的层序遍历序列给出。对于一棵有 N 个结点的树,序列共包含 2N 个数据,其中 N 个为结点样本数,另外 N 个为分隔符 -1。根结点是第 1 个结点。对于第 i 个结点,序列中第 i 个 -1 之后、第 i+1 个 -1 之前的结点序列,就是该结点的子结点序列。结点本身按照层序遍历的顺序出现。
约束条件
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册