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

节点深度求和算法疑问:stack.pop()解构及depth逐次+1的作用

这段代码是通过栈实现迭代式深度优先遍历,统计二叉树所有节点的深度总和,针对两个疑问解答如下:

解构node和depth的作用

栈中存储的每个元素都是绑定了节点和对应深度的对象:

  • node 是当前待处理的二叉树节点
  • depth 是这个节点对应的深度值

使用对象解构语法可以直接从栈弹出的对象中提取这两个属性,本质等价于普通的对象属性访问:

// 解构写法等价于下方的普通写法
const stackItem = stack.pop();
const node = stackItem.node;
const depth = stackItem.depth;

这种写法可以简化代码,避免重复书写对象属性访问语句,可读性更高。

压栈时depth + 1的原因

根据题目定义,节点深度是该节点到根节点的距离,子节点的深度一定比其父节点大1。
当前处理的节点是父节点,它的左、右子节点的层级比父节点低1层,所以在把左右子节点压入栈时,需要给子节点绑定的深度设置为当前父节点深度 + 1,后续弹出子节点处理时,拿到的深度就是符合定义的准确值,累加到总和的结果才正确。

举个简单例子验证:

  • 初始栈中根节点深度为0,弹出后累加0到总和,压入根节点的左右子节点,深度设为0+1=1
  • 后续弹出子节点时,拿到的深度是1,累加1到总和,再压入该子节点的左右节点,深度设为1+1=2
  • 以此类推,所有节点的深度计算都符合定义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:45:05