【发布时间】:2013-05-26 12:41:58
【问题描述】:
我正在尝试在 C 中编写一个递归函数,它接收二叉树中的根,并检查是否存在等于给定总和的 pathtoleaf。例如,它接收以下树中的第一个节点:
1 2 3 5 10 4 20 2
以下是 PathToLeaf 的示例:
- 1⟶2⟶10
- 2⟶5
- 20⟶2
以下不是PathToLeaf:
- 1⟶2
- 1⟶3⟶20
如果路径存在,函数应该返回 1;如果不是,它应该返回 0。
在这棵树中,如果 sum=12,那么函数应该返回 1,因为路径是 2⟶10;如果 sum=4,那么函数应该返回 0,因为唯一的路径 (1⟶3) 不会以叶子结尾。
我最大的问题是我只能管理一个检查根叶路径的函数。
【问题讨论】:
-
管理一组总和,而不是单个总和。当您访问一个节点时,(1) 将 0 插入到当前集合中,(2) 将节点的值添加(如算术)到集合的所有元素中。使用新集合访问节点的子节点。
标签: c binary-tree