`
jackchen0227
  • 浏览: 147026 次
  • 性别: Icon_minigender_1
  • 来自: 帝都
社区版块
存档分类
最新评论

-在二元树中找出和为某一值的所有路径--捡捡递归的使用

    博客分类:
  • ACM
 
阅读更多
/*
	算法要求:打印从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造成的影响
}

 最近的代码能力严重下降,

捡捡 递归的使用

 

 

分享到:
评论

相关推荐

    Google微软-华为腾讯-面试笔试数据结构和算法编程题目和部分答案

    这其中包括了二元查找树转换为排序双向链表、设计包含min函数的栈、求子数组的最大和、在二元树中找出和为某一值的所有路径、查找最小的k个元素等题目。这些题目都是常见的数据结构和算法面试题目,旨在考察面试者的...

    微软公司等数据结构+算法面试100题 第1 100题 全部出炉

    4. 在二元树中找出和为某一值的所有路径: - 该问题要求在二元树中找出从根节点到叶子节点的所有路径,这些路径上的节点值之和等于给定值。 - 需要使用深度优先搜索(DFS)算法,递归遍历二元树的所有节点,并将...

    算法面试题总结_嵌入式-常用知识&面试题库_大厂面试真题.doc

    4. 在二元树中找出和为某一值的所有路径:本题目考察了二元树和算法的知识,要求从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径,并打印出和与输入整数相等的所有路径。解决方法是使用递归算法...

    数据结构100题

    在二元树中找出和为某一值的所有路径 - **背景介绍**: - 二元树(Binary Tree)是一种树形数据结构,每个节点最多有两个子节点。 - 本题要求在给定的二元树中找出所有和等于给定值的路径。 - **题目解析**: - ...

    C语言面试题总结汇总经典.pdf

    #### 2.5 在二元树中找出和为某一值的所有路径 - **问题描述**:给定一个二元树和一个整数值,找出所有从根节点到叶子节点的路径,使得这些路径上的节点值之和等于给定的整数值。 - **解决方案**: - 使用深度优先...

    各大公司算法面试题

    - 要找出二元树中和为特定值的所有路径,可以使用深度优先搜索(DFS)策略,从根节点开始递归地访问每个节点,并在访问过程中跟踪路径和。 - 当到达叶子节点时,检查当前路径的和是否等于目标值,如果相等,则将该...

    算法面试题总结.pdf

    四、在二元树中找出和为某一值的所有路径 这个问题要求输入一个整数和一棵二元树,从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径,打印出和与输入整数相等的所有路径。解答中,我们使用回溯...

    【史上最全】算法面试题集锦.pdf

    4. 在二元树中找出和为某一值的所有路径 知识点:二元树遍历、路径问题、回溯法 要找出二元树中所有和为目标值的路径,可以使用回溯法。从根节点开始,递归遍历每个节点,并记录当前路径的和。当达到叶节点时,判断...

    [珍藏版]微软等数据结构+算法面试100题全部出炉[100题V0.1最终完美版]

    #### 2.2 在二元树中找出和为某一值的所有路径 **题目概述**:给定一个整数值和一棵二元树,找出所有从根节点到叶子节点的路径,使得路径上所有节点值的和等于给定的整数值。 **解题思路**: - 采用深度优先搜索...

    微软等数据结构+算法面试100题.

    在二元树中找出和为某一值的所有路径 **知识点概述:** 本题要求在一个二元树中找到所有路径,使得路径上节点的值之和等于给定的目标值。 **核心思想:** - **深度优先搜索**:采用深度优先搜索的方式遍历二元树...

    微软等数据结构 算法面试100题

    在二元树中找出和为某一值的所有路径 - **题目概述**:给定一个整数`target`和一棵二元树,找出所有从根节点到叶子节点路径上的节点值之和等于`target`的路径。 - **关键概念**: - **递归**:一种通过调用自身...

    c和c++500强面试题

    5. 在二元树中找出和为某一值的所有路径:这是一个递归遍历二元树并记录路径和的问题。可以通过深度优先搜索(DFS)来实现,在递归过程中累加路径上的节点值,当达到叶子节点且路径和等于目标值时,记录该路径。 **...

    100 questions by_july

    在二元树中找出和为某一值的所有路径(树) **题目描述**: 给定一个整数target和一棵二元树,从树的根节点开始往下访问直到叶子节点,打印出所有路径的和与target相等的路径。 **数据结构定义**: ```cpp struct...

    刀疤鸭之数据结构面试题

    #### 五、在二元树中找出和为某一值的所有路径 **知识点:** - **二元树(Binary Tree)**: 每个节点最多有两个子节点的树结构。 - **路径**:从树的根节点到某个叶子节点的一系列节点。 **实现思路:** 1. **递归...

    微软面试题库

    在二元树中找出和为某一值的所有路径 **知识点概述:** 本题要求在给定的二叉树中找出所有从根节点到叶子节点的路径,这些路径上的节点值之和等于给定的目标值。 **解题思路:** 1. **深度优先搜索(DFS):**...

    微软等数据结构+算法面试100题

    在二元树中找出和为某一值的所有路径 此题目要求在给定的二元树中,找到所有节点值之和等于给定整数值的路径。这通常可以通过深度优先搜索(DFS)算法来实现,从根节点开始递归地遍历整个树,同时计算从根节点到...

Global site tag (gtag.js) - Google Analytics