You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除索引值为X的指定叶节点并显示剩余叶节点?

删除指定索引的叶节点并统计剩余叶节点数量

没问题,我来一步步拆解这个问题,帮你理清操作逻辑和验证测试案例:

核心操作步骤

要完成这个任务,我们需要遵循以下几个关键步骤:

  1. 构建树结构:根据输入数据创建树的父子关系映射——输入的第一个数字是节点总数,后续每个数字对应对应索引节点的父节点(-1表示该节点是根节点)。
  2. 定位目标节点:确认要删除的索引X对应的节点是否为叶节点(叶节点的定义是没有任何子节点)。
  3. 执行删除操作:从树中移除目标节点,同时更新其父节点的子节点列表(把X从父节点的子节点中删掉)。
  4. 统计剩余叶节点:遍历整个树结构,找出所有没有子节点的节点,统计它们的数量。

测试案例验证

测试用例1

  • 输入:5 -1 0 0 1 1 2
  • 初始树结构解析:根节点是索引0(父节点为-1),0的子节点是1和2;1的子节点是3和4;此时节点2、3、4没有子节点,属于叶节点。
  • 操作:删除索引为2的叶节点
  • 结果:移除节点2后,父节点0的子节点只剩1,而节点3、4仍无子女,所以剩余叶节点是3和4,数量为2 → 输出:2

测试用例2

  • 输入:5 -1 0 0 1 1 1
  • 初始树结构解析:根节点是0,0的子节点是1和2;1的子节点是3和4;初始叶节点为2、3、4。
  • 操作:删除索引为1的节点(这里注意:虽然1不是初始叶节点,但删除它后,它的子节点3、4会因为失去父节点而被移除)
  • 结果:剩余的节点中只有2没有子节点,所以叶节点数量为1 → 输出:1

实现小贴士

如果要写代码实现这个逻辑,可以参考这些思路:

  • 用数组或字典存储每个节点的子节点列表,比如children = [[] for _ in range(n)],遍历输入的父节点数组来填充这个列表。
  • 删除节点时,先找到它的父节点parent,然后执行children[parent].remove(X)。
  • 最后统计所有len(children[i]) == 0的节点数量,就是剩余叶节点的个数。

内容的提问来源于stack exchange,提问作者Debosmit Majumder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:01:55