![]() |
1
6
第二个递归分支覆盖第一个分支的值。另外,应该为左根添加1。 类似于:
|
![]() |
2
3
不需要传播累加器(
|
![]() |
3
1
在你的第二行
放弃count的上一个值。也许应该是
不过,我想这样表达:
|
![]() |
4
0
我想你得重新构造一下你的代码。不要传递左节点的当前计数,只需从两个子节点接收并将它们相加即可。 |
![]() |
5
0
我认为最优雅的解决方案是这个。是的,我当然有偏见。我是人类:-)
通过向下传递左节点的指示符,它简化了必须向上传递的内容。下图显示了向上传递的每个和-从底部开始,每个空值向上传递0。 左边的每个节点都向上传递1加上来自下面两个分支的任何内容。右边的每个节点都向上传递0加上来自下面两个分支的任何内容。 根节点不添加任何内容,因为它既不是左节点也不是右节点(它的处理方式与右节点相同)。
您可以从这个完整的程序中看到操作:
输出调试行:
的非调试版本
|
![]() |
Zevvysan · 为什么我的打印函数之一要删除节点? 7 年前 |
|
user9573040 · 递归二叉树高度 7 年前 |
![]() |
Dipesh Desai · 在二叉树haskell中搜索值 7 年前 |
![]() |
ibrahim · “main”已停止工作-C++[开发人员++] 7 年前 |