/*
算法要求:打印从root到叶节点的路径上的权值和 为指定数值的 所有路径
算法:
1、使用vector 类型的path来存放路径,避免回溯,递归函数之间的消息传递问题
2、注意遍历完左子树还要遍历右子树,所以在pos 1处不能有return
3、在递归的最后需要消除当前节点造成的影响,比如对path中pop_back当前的node。另外如果修改了curSum,则需要修正回去。
*/
void printMatchPath(binTreeNode * node,int request,int curSum,vector<binTreeNode*> path)
{
if(node == NULL)
return;
if(node->left == NULL && node->right == NULL)
{
if(request == (node->data + curSum))
{
for(int i=0;i<path.size();i++)
{
printf("%d ",((binTreeNode*)path[i])->data);
}
printf("%d\n",node->data);
}
return;
}
path.push_back(node);// pos 0
if(node->left != NULL)
{
//path.push_back(node);//pos 1:这个会和pos 2处的代码重复执行,而且执行完之后没有消除影响。
printMatchPath(node->left,request,curSum + node->data,path);
}
if(node->right != NULL)
{
//path.push_back(node);//pos 2:处的代码重复执行,就会把当前节点入栈两次,所以需要把这些共有的操作 提到前边
printMatchPath(node->right,request,curSum + node->data,path);
}
//需要清楚当前节点造成的对curSum的影响,但是此处没有修改curSum所以就不需要额外的操作了
path.pop_back();//消除 对path造成的影响
}
最近的代码能力严重下降,
捡捡 递归的使用
分享到:
相关推荐
n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---递归回溯法 n后问题---...
递归,可以实现多位数组的图像显示.......
遍历递归的先中後序, 非递归的先中後序, 计算出深度 结点数 /* 运行结果: ------------------------ 请先序输入二叉树(如:ab三个空格表示a为根节点,b为左子树的二叉树) ab c 先序递归遍历二叉树: a b c 先序...
文件递归-XML递归-树图递归 面试中的常见递归算法:附带截图和详细代码
使用回溯法求解迷宫问题,在这个程序中使用的是递归算法
计算部分的数量 前提, 目标, 结果 前提: 学生需要掌握以下机能 • 树- 了解树的表示方法 • Map容器- 了解如何日用标准库中的map容器以及迭代器 • 递归- 了解如何构造一个递归的解决方案去解决一个问题
/*选择二叉链式存储结构作为二叉树的存储结构,设计一个程序实现二叉树的基本操作(包括建立、输出、前序遍历、中序遍历、后序遍历、求树高、统计叶子总数等) 【实验内容】 必做内容 程序的菜单功能项如下: 1----...
代码有详细注释! 1.语言:使用java编程 2.数据结构:使用单链表头插法仿实现栈 3.非递归使用DFS搜索一条路径 4.递归求解所有路径
c#递归树自动树 添加父子节点等等操作全部包涵
本文实例讲述了C++使用递归和非递归算法实现的二叉树叶子节点个数计算方法。分享给大家供大家参考,具体如下: /*求二叉树叶子节点个数 -- 采用递归和非递归方法 经调试可运行源码及分析如下: ***/ #include #...
Java实现矩阵中的路径(回溯法),采用非递归的回溯法,使用栈模拟递归过程。代码注释详细,可正常运行
使用递归的算法求树的高度与最长路径(laihaitao
【大纲】 0-1-课程内容和安排介绍 1-1-计算机的概念 1-2-程序设计语言概述 1-3-Python语言 ...第6章-函数与递归-3-改变参数值的函数 第6章-函数与递归-4-程序结构和递归 第6章-函数与递归-5-函数实例
python 下用递归函数实现的分形树。利用的是turtle库,简单易用。利用分形几何美学的思想,就是局部的不断重复。
关于三维地形渲染的lod四叉树算法中的基本四叉树递归算法
java语法 method 递归 马克-to-win java视频 方法 重载
大师叫你不再害怕 ----递归 大师叫你不再害怕 ----递归 大师叫你不再害怕 ----递归
论文研究-递归分类树在信用风险分析中的应用.pdf, 递归分类树是计算机实现 ,基于统计理论的非参数的识别技术 .本文将之用于商业银行信用风险分析 ,以判别分析为参照方法...
递归遍历一个目录,输出目录中的所有文件名路径,输出时用“/”符号代替“\”符号
易语言递归算法画树源码例程程序使用递归算法在易语言画板上画树。点评:易语言递归算法画树源码是易语言编程算法的应用例程。