二叉树的路径和为给定数值的所有路径

每天一道LeetCode-----找到二叉树所有和为给定值的路径 Path Sum原题链接Path Sum判断二叉树中有没有一条从根节点到叶子节点的路径元素和为给定值只需要遍历所有路径即可,需要注意的是对叶子节点的判断,需要满足左右两个节点都是空的条件时才为叶子节点代码如下/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *l 阅读详情

//题意:

//输出二叉树的路径和为给定数值的所有路径;

//二叉树路径是从根节点向下一直到叶子节点的所有节点形成的路径。

//思路:

// 1. 采用前序遍历方式访问某一个节点时,我们把节点加到路径上并累加节点值

//    1) 如果该节点为叶子节点并且路劲中累加和恰好为输入的整数值时输出当前路径;

//    2) 如果该节点不是叶子节点,则继续寻找该节点的左孩子或右节点;

//  2. 如果该路径节点已经是叶子节点后则返回父节点,并且当前路径上减去该节点值,保证返回父节点时路径正确。

#include <iostream>
#include <vector>
using namespace std;

int preOrder[] = {1, 2, 4, 5, 7};
int inOrder[] = {4, 2, 5, 1, 7};

typedef struct Node_
{
	int data;
	Node_ * left, * right;
}Node;

vector<int> path;

//前序遍历树
void preOrderTree(Node *root)
{
	if(!root)
	{
		return;
	}

	printf("%d ", root->data);
	preOrderTree(root->left);
	preOrderTree(root->right);
}

//利用前序数组和后续数组重建
Node * Rebuild(Node * &root, int preOrder[], int inOrder[], int n, int pl, int pr, int il, int ir)
{
	int i = 0;
	for (i = il; i <= ir; ++i)
	{
		if (inOrder[i] == preOrder[pl])
		{
			break;
		}
	}

	int k = i - il;

	if (i > ir)
	{
		root = 0;
		return root;
	}
	else
	{
		root = new Node();
		root->data = inOrder[i];
	}

	root->left = Rebuild(root->left, preOrder, inOrder, n, pl + 1, pl + k, il, i - 1);
	root->right = Rebuild(root->right, preOrder, inOrder, n, pl + k + 1, pr, i + 1, ir);
	return root;
}

//遍历树的路径,输出节点值
void SumTree(Node *root, int & curSum, int sum)
{
	if (!root)
	{
		return;
	}

	curSum += root->data;
	path.push_back(root->data);

	bool isLeaf = (!root->left && !root->right);

	if (curSum == sum && isLeaf)
	{
		vector<int>::iterator iter = path.begin();
		while(iter != path.end())
		{
			printf("%d ", *iter);
			iter++;
		}

		printf("\n");
	}

	SumTree(root->left, curSum, sum);
	SumTree(root->right, curSum, sum);
	
	curSum -= root->data;
	path.pop_back();
}

int main()
{
	int n = sizeof(preOrder) / sizeof(preOrder[0]);
	Node * root = Rebuild(root, preOrder, inOrder, n, 0, n-1, 0, n-1);
	printf("Pre Order:");
	preOrderTree(root);
	printf("\n");

	printf("Path:\n");
	int curSum = 0;
	int sum = 8;
	path.clear();
	SumTree(root, curSum, sum);
	return 0;
}



捷联惯导总结--初始对准,位置标定,INS姿态更新,GPS/INS组合 惯导及组合导航回顾  2018.09.16 今天和17系的同学一起把惯导的流程捋了一遍,为了加深自己的记忆,这里在前面把心得大致列出来。 我们这里只考虑捷联式惯导及松组合 首先拿到惯性传感器(加速度计和陀螺仪)需要对其进行标定,是为了求出零偏,比例因子,交轴耦合这些误差。这些误差有的虽然在出厂时会给出,但是考虑到实际环境不同,还是要做标定。一般采用的是六位置旋转法,针对加速度计和陀螺仪同时... 阅读详情

相关推荐

ENVI-met新手必看:从零开始创建城市微气候模型(附详细步骤+底图制作技巧)

本文为ENVI-met新手提供从零开始创建城市微气候模型的详细指南,包括环境准备、参数配置、底图制作技巧和三维模型构建步骤。特别针对常见问题提供解决方案,帮助初学者快速掌握城市微气候模拟技术,提升建模效率。

weixin_29269441的博客 407

给定一棵二叉树,和一个数值。求二叉树的路径和等于给定值的所有路径

思路1 遍历二叉树,记录所有叶子结点,然后依次向上遍历到根节点。路径和等于给定值,就说明符合; vector > pathSum(TreeNode *root, int sum) { vector> result; if(root==NULL) return result; unordered_map mp; /

i_am_bird的博客 2839

机场数据治理系列介绍(1):机场行业数据中台中的数据管理顶层设计方案

民航机场行业的数据中台中,有关数据管理顶层设计方案需要结合机场行业的业务特点和技术需求进行具体的设计,今日我们简要考量设计提供一个参考方案:

机场信息系统研究员的专栏 1604

找出二叉树中所有和为给定值的路径

//找出二叉树中所有和为给定值的路径,以数组的形式打印出来 //采用深搜的方法来实现 public List&lt;List&lt;Integer&gt;&gt; pathSum(TreeNode root, int sum){ List&lt;List&lt;Integer&gt;&gt; result = new LinkedList&lt;List&lt;Integer&gt;&gt;()...

qq_25499519的博客 847

2025年普通人转向人工智能运维(AIOps)学习建议(附最新技术实践与资源)

AIOps不仅是技术的叠加,更是运维流程的重构。建议通过“学习-实践-反馈”循环,逐步从工具使用者成长为解决方案设计者。如需完整资源链接,可访问上述推荐的优快云博客及GitHub仓库。

资深全栈架构师,乐于在 优快云 分享技术见解,与大家携手共进,共攀技术巅峰! 3096

Oracle集群管理-19.3升级19.18 opatchauto总结(java报错,resume oneoffs缺失目录)

t. (那个认为补丁已经打上了,但是oneoffs目录里面没有。将安装包文件的权限全部改成777.就继续执行了上述命令 ,此时使用opatch lsinv也是报错 ,在正常执行opatchauto apply。1 创建目录,存放补丁包,并赋予权限。于是使用如下命令对补丁进行回滚。

oradbm的博客 1415

【LeetCode】求二叉树中所有路径和等于给定值的路径:Path Sum II

Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum. Note:A leaf is a node with no children. Example: Given the below binary tree andsum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ ..

Arlingtonroad的博客 304

Ecg信号QRS波峰检测:A Real-Time QRS Detection Algorithm (Pan-Tompkins法)

Pan-Tompkins法是R峰检测的经典方法,被引量高达6000+次。 Pan J, Tompkins W J. A real-time QRS detection algorithm[J]. IEEE transactions on biomedical engineering, 1985 (3): 230-236. 本文对论文流程进行了总结,并参考BioSigKit项目,复现了论文代码。 流程图: 代码如下: 第一部分是信号读入,这里使用MIT_BIH信号的100,读入10000个数据点 第二部分

weixin_42870380的博客 1万+

【经典数据结构算法】(4)二叉树求和为定值的所有路径

1 /* 2 题目:输入一个整数和一颗二叉树。 3 从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。 4 打印出与输入整数相等的所有路径。 5 例如 输入整数22和如下二元树 6 10 7 / \ 8 5 12 9 / \10 4 711 则打印出两条路径:10,12和12,5,712 分

pwpal的专栏 620

基于SpringBoot 3 + Vue 3的全栈民宿预约管理系统设计与实现

文章将详细阐述系统的需求分析、架构设计、数据库设计、核心功能模块的实现(包括用户认证、房源管理、订单流程、支付集成等),并提供关键代码片段,最后对系统进行总结与展望。.requestMatchers("/api/admin/**").hasRole("ADMIN") // 管理员接口。.requestMatchers("/api/auth/**").permitAll() // 认证接口公开。.requestMatchers("/api/public/**").permitAll() // 公开资源。

2201_76125393的博客 272

基于STM32F1XX 、HAL库的OPT4001-Q1环境光传感器驱动应用C语言程序设计

OPT4001-Q1 的输出是半对数 的,具有 9 个二进制对数满量程照度范围,每个范围内具有高度线性响应,使得 PicoStar™ 型号的测量能力为 312.5μlux 至 84klux,USON 型号的测量能力为 400µlux 至 107klux。// 禁用中断(示例)

PP_Cottage的博客 461

leetcode437路径总和III(给定一个二叉树,它的每个结点都存放着一个整数值。 找出路径和等于给定数值的路径总数)

  给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。   路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。   二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。 示例: root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8 返回 3。和等于 8 的路径有: 5 -> 3 5 -> 2 -> 1 -3 -> 1

Miriwas 1164

Z-Image Turbo随机性增强插件的下载教程及使用方法 z-image生成图像太相似怎么办 Z-Image Turbo 整合包下载

Z-Image Turbo 是出了名的“seed 不敏感”,非常难做多样化图像创作。ComfyUi-ConditioningNoiseInjection 插件通过在conditioning(提示词编码)阶段加入可控噪声,成功解决了 Turbo 随机性不足的问题。它不仅能让 Turbo 产生更丰富的构图差异,还能保持主题稳定,是目前我测试过最有效的 Turbo 随机性增强工具。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1984

【LeetCode-437】437.路径总和 III(从二叉树中找出路径和等于给定数值的路径总数)

路径总和 III 给定一个二叉树,它的每个结点都存放着一个整数值。 找出路径和等于给定数值的路径总数。 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。 思路一:dfs 解题思路 /** * Definition for a binary tree node. * public class TreeNode { * int val; * T

weixin_42956047的博客 507

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

判断二叉树的路径和是否和给定数值相等

package niuke.day1; import java.util.Stack; /*Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum. For ...

ZWB626的博客 498

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

二叉树--求出所有路径,它们的和是给定的数值

Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum. For example: Given the below binary tree andsum = 22, 5 / \ ...

ZWB626的博客 408

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

#数据结构 给定一个二叉树和一个数值,判断该树中是否存在根节点到叶子结点的路径上所有结点值之和等于这个数值

//给定一个二叉树和一个数值,判断该树中是否存在根节点到叶子结点的路径上所有结点值之和等于这个数值 bool hasPathSum(struct TreeNode* root, int sum){ if(rootNULL){ //空树返回错误 return false; }else if(root->leftNULL&&root->rightNULL&&root->valsum){ //当前结点为叶子节点并且数值相等返回ttrue return true

qq_42368203的博客 1732

找出二叉树中和为k的所有路径 Path Sum II

题目:Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.该问题和之前的路径和问题相比,进阶了一步。之前的问题是,判断是否有这样的一条路径,返回布尔值即可。本问题是要找出所有的路径,并且把它们返回。 注意:二叉树的结点元素可以是负数的,所有不走到

LUCKYOJ 3520

leetcode437. 路径总和 III(二叉树)

给定一个二叉树,它的每个结点都存放着一个整数值。 找出路径和等于给定数值的路径总数。 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。 双遍历 /** * Definition for a binary tree node. * public clas...

rudychan的博客 206

[Leetcode]Path Sum

Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum. For example: Given the below binary tree and sum

NoooName的专栏 366

437. 路径总和 III

给定一个二叉树,它的每个结点都存放着一个整数值。 找出路径和等于给定数值的路径总数。 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。 示例: root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8 ...

Umbrella Corporation 7828

【二叉树】打印二叉树中结点数值总和等于某个给定值的所有路径

问题 给定一棵二叉树,其中每个结点都含有一个数值。设计一个算法,打印结点数值总和等于某个给定值的所有路径。注意:路径不一定非得从二叉树的根结点或叶节点开始或结束。 思路 采用二次遍历的方式。 1. 在函数func1中,先从根结点开始遍历二叉树,到达当前结点current。 2. 将current传入func2中,遍历current子树,打印二叉树中数值总和等于给定值的路径。 两

donghuaan的博客 1316

二叉树中和为某一值得路径 java实现

本题来自《剑指offer》   路径为从根节点到叶节点一条路径,路径经过的各节点数值之和等于某一给定数值,则打印路径上的节点 因为需要打印满足条件的路径节点信息和各节点之和,需要栈记录经过的节点,和一个保存数值之和的变量 用前序遍历方法,可以首先访问节点,然后将节点入栈,并将数值和之前入栈的节点值相加 如果当前之和否满足给定值,判断当前节点是否叶节点,是则打印路径信息 判断节点左右孩...

weixin_30907935的博客 74

【LeetCode】路径总和III(对二叉树的每个结点进行前序遍历)

给定一个二叉树,它的每个结点都存放着一个整数值。 找出路径和等于给定数值的路径总数。 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。 示例: root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8 ...

qq_37822034的博客 338

437.路径总和

给定一个二叉树,它的每个结点都存放着一个整数值。 找出路径和等于给定数值的路径总数。 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。 示例: root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8 ...

zrh_优快云的博客 190

LeetCode写题历程——437. 路径总和 III

1.题目描述 给定一个二叉树,它的每个结点都存放着一个整数值。 找出路径和等于给定数值的路径总数。 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。 2.解题思路 (1)设以根节点为起点。因为路径方向是向下,所以采取前序遍历的方法遍历节点,遍历节点的过程...

poxiao0278的博客 264
上一篇: 重建二叉树和树的层次遍历
下一篇: C++ 类初始化列表的成员初始化顺序
nothing is worse
博客等级 码龄17年 5粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值