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

给定n-m层树结构,求深度优先搜索的节点总访问次数

DFS遍历总访问次数计算(含重复访问)

问题分析

给定一棵三层树:根节点有n个子节点,每个子节点又有m个子节点(叶子节点)。需要计算深度优先搜索(DFS)遍历所有根到叶子路径时,节点的总访问次数(含重复访问,即回溯后再次访问节点也计入次数)。

推导过程

我们可以从具体场景拆解:

  • 对于根节点的任意一个子节点A:
    • 访问A的第一个叶子节点时,需要依次访问根→A→叶子,共3次访问;
    • 访问A的第2到第m个叶子节点时,由于DFS回溯后已经处于A节点,只需访问A→叶子,每次仅2次访问;
    • 因此,单个子节点A对应的总访问次数为:3 + 2*(m-1) = 2m + 1。
  • 根节点共有n个这样的子节点,因此总访问次数为n*(2m + 1)。

也可以通过总路径数和总节点数推导:

  • 总路径数为n*m(每个根的子节点对应m条叶子路径);
  • 总节点数为1 + n + n*m(根节点 + n个子节点 + n*m个叶子节点);
  • 总访问次数 = 总路径数 + 总节点数 - 1,代入后化简结果与上述公式一致:n*m + (1 + n + n*m) -1 = n*(2m+1)。

示例计算

当n=30,m=35时:
总访问次数 = 30*(2*35 + 1) = 30*71 = 2130。

验证小例子

  • 当n=1,m=2(对应问题中的示例场景):
    总访问次数 = 1*(2*2+1)=5,与描述中的“两条路径共访问5个节点”完全匹配。
  • 当n=2,m=1:
    总访问次数 = 2*(2*1+1)=6,对应两条独立路径的总访问次数3+3=6,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 04:12:04