二叉树中根到叶子路径中节点和等于给定值的路径
来源:互联网 发布:锁屏软件大全 编辑:程序博客网 时间:2024/04/29 13:04
1. 描述
输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条
路径。打印出和与输入整数相等的所有路径。
例如输入整数 22 和如下二元树
10
/ \
5 12
/ \
4 7
则打印出两条路径:10, 12 和 10, 5, 7。
据说这是百度的一道笔试题。
结点的存储结构见<二叉树的操作>中存储结构部分。
算法如下:
- #define N 50
- BiNode *stack[N]; //定义栈存储路径上的结点指针
- int top = 0;
- void findPath(BiNode *T, int sum, int currSum)
- {
- if (! T) return;
- currSum += T->data;
- stack[top++] = T;
- if (! T->lchild && ! T->rchild && currSum == sum) {
- int i;
- for (i = 0; i < top; i++)
- printf("%d ", stack[i]->data); //打印路径节点的值
- printf("\n");
- } else {
- findPath(T->lchild, sum, currSum);
- findPath(T->rchild, sum, currSum);
- }
- currSum -= T->data;
- top--;
- }
sum为给定的值,初始调用currSum为零。
代码如下:
- #include "headfiles/BiNode.h"
- #include "sharedSource/createBi_pre_in.c"
- void findPath(BiNode *T, int sum, int currSum);
- int main(void)
- {
- BiNode *T;
- char pre[] = {5,4,6,3,2,7,4,1,2};
- char in[] = {3,6,2,4,5,1,4,7,2};
- T = createBi_pre_in(pre, in, 0,0, 9);
- findPath(T, 17, 0);
- return 0;
- }
0 0
- 二叉树中根到叶子路径中节点和等于给定值的路径
- 二叉树中根到叶子路径中节点和等于给定值的路径
- 二叉树中根到叶子路径中节点和等于给定值的路径
- 查看一颗二叉树从根到叶子路径的节点和是否等于某个给定的数
- PathSum2 给出所有的树根节点到叶子节点之和等于给定值的所有路径
- 给定一棵二叉树,和一个数值。求二叉树的路径和等于给定值的所有路径
- 找出所有从根节点到叶子节点路径和等于n的路径并输出
- 找出所有从根节点到叶子节点路径和等于n的路径并输出
- 节点数值总和等于某个给定值的所有路径
- 重建二叉树遍历路径求和的最小值和最小值的路径的叶子节点
- 给定一棵二叉树,二叉树每个节点的值唯一,从根节点开始找出路径上的所有节点的节点值之和等于规定值的路径
- 寻找二叉树中长度为k的路径(根节点到叶子节点)
- Leetcode:112. Path Sum (求Tree中是否存在路径的和等于给定值)
- 求tree中节点之间路径总和等于给定数值的算法
- 【31】给定一个二叉树打印出所有从根结点到叶子结点路径和为 k 的路径
- 【31】给定一个二叉树打印出所有从根结点到叶子结点路径和为 k 的路径
- 打印二叉树两个叶子节点间的路径
- 打印二叉树两个叶子节点间的路径
- 第9周项目1 计算一千以内偶数之和
- hibernate.cgf.xml
- 第9周项目5-程序填充题b
- 允许ubuntu下mysql远程连接
- acm学习入门指南
- 二叉树中根到叶子路径中节点和等于给定值的路径
- 沙盒路径
- 第9周项目——穷举法 2 之换分币
- Tomcat(MyEclipse)+MySql+Android 通讯实验总结
- 第九周项目四乘法口诀表
- java中判断字符串是否为数字的方法的几种方法
- GDI基础小记1--获取设备环境句柄
- C:deleteSubString 删除源字符串中的指定子串
- GridView结合SimpleAdapter实例