【面试题】在二元树中找出和为某一值的所有路径

Win10系统内存占用异常飙升?三步排查法快速定位问题根源 本文针对Win10系统内存占用异常飙升问题,提供了一套三步排查法。首先利用任务管理器和资源监视器进行深度系统体检,定位隐形内存消耗者;其次通过干净启动和禁用非必要后台服务,揪出导致内存泄漏的第三方软件或驱动;最后进行终极深度清理,包括检查内存完整性、调整虚拟内存设置以及更新关键驱动程序,帮助用户快速恢复系统流畅运行。 阅读详情
        问题:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。
        例如输入整数 22 ,如下图二元树:
                                            10
                                           /     \
                                          5     12
                                        /    \   
                                       4     7 

 则打印出两条路径:10, 12和10, 5, 7。

二元树节点的数据结构定义为:

struct BinaryTreeNode // a node in the binary tree
{
int m_nValue; // value of node
BinaryTreeNode *m_pLeft; // left child of node
BinaryTreeNode *m_pRight; // right child of node
};

 
分析:

思路一

1、当访问到某一节点时,把该结点的值添加到当前和变量,且把该结点压入栈中。

2、若结点为叶子结点,且当前和变量等于期望的和,则打印栈中的结点值,即为所需的路径。

3、若结点不是叶子结点,继续访问它的左孩子结点,访问它的右孩子结点。

4、删除该结点。包括从当前和变量中减去结点值,从栈中弹出结点值。此时,已回到父结点。

思路二

另一种类似的方法不用录当前路径上所有元素的和sum,而是使用期望的和依次减去访问到的节点的值……最后是判断到达叶子节点时期望和是否减为0。

代码如下:

 

void findPath(BinaryTreeNode *pTreeNode,
         int expectedSum,
         vector<int>& path,
         int & currentSum)
 {
     if( !pTreeNode )
         return;//结点值添加至当前和变量中//结点压入栈中
     currentSum += pTreeNode->m_nValue;
     path.push_back(pTreeNode->m_nValue);
     bool isLeaf = !(pTreeNode->m_pLeft) && !(pTreeNode->m_pRight);//当前结点为叶子结点,且和为期望值,打印路径
     if(currentSum == expectedSum && isLeaf)
     {
         vector<int>::iterator iter;
         for(iter = path.begin(); iter != path.end(); iter++)
         {
             cout << *iter << "\t";
         }
         cout << endl;
     }//当前结点不为叶子结点,查找它的左右孩子结点
     if(pTreeNode->m_pLeft)
         findPath(pTreeNode->m_pLeft, expectedSum, path, currentSum);
     if(pTreeNode->m_pRight)
         findPath(pTreeNode->m_pRight, expectedSum, path, currentSum);
 //当前结点删除,退至其父结点
     currentSum -= pTreeNode->m_nValue;
     path.pop_back();
 }


int main()
{
	/****创建二叉查找树****/
     BinaryTreeNode *pRoot=NULL; 
    addBSTreeNode(pRoot,10); 
    addBSTreeNode(pRoot,12); 
    addBSTreeNode(pRoot,5); 
    addBSTreeNode(pRoot,7); 
    addBSTreeNode(pRoot,4); 
   vector<int> path;  
	  int sum = 0;
    findPath(pRoot, 22, path, sum);
  return 0;
}


 

Cilium动手实验室: 精通之旅---1.Getting Started with Cilium 我们需要在 HTTP 层的第 7 层实施策略,以限制允许 tiefighter 调用的确切 API,以及不允许调用哪些 API。上仅需要的 API 资源的访问,从而为微服务之间的通信实施“最低权限”安全方法。船只上进行匹配,因此我们需要在该标签上进行匹配,此外,我们必须确保来自带有标签。为了模拟我们的连接测试,我们将使用 curl 执行简单的 API 调用。在我们立即开始更改策略之前,让我们考虑一下相应的网络策略应该是什么样子。的规则,该规则将通过 L3-L4 策略对死星的访问限制为仅帝国船只。 阅读详情

相关推荐

AF3​​​​​​​ Msa、TemplateHit、HitMetadata类解读

Msa:处理 多序列比对 (MSA) 结果,为 AlphaFold3 提供 序列进化信息。 TemplateHit:存储 查询序列与模板结构的比对信息,用于 筛选模板。 HitMetadata:提供 比对模板的 PDB 结构信息,帮助 解析和使用模板数据。

qq_27390023的博客 818

程序员面试题精选(4):在二元树中找出和为某一值的所有路径

题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数22和如下二元树                                            10                                           /   /                      

yysdsyl的专栏 3038

AGX Orin设计-外围电路设计之一

AGX ORIN是英伟达Jetson系列中算力规格最高端的模组,其高达200TOPS/275TOPS的算力可以为各类场景提供澎湃的算力支持,本篇文章针对AGX ORIN的常规外围电路设计做分析描述。

zhiyuchenkeji的博客 4477

在二元树中找出和为某一值的所有路径(树)----面试题系列

题目:输入一个整数和一棵二元树。 从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。 打印出和与输入整数相等的所有路径。 例如 输入整数 22 和如下二元树  10     /    \    5      12   / \  4   7 则打印出两条路径:10, 12 和 10, 5, 7。 这个题要分两步去完成

小梁先生 861

KNN算法实现数据分类及matlab完整代码

其基本思想是:对于一个未知样本,找出与该样本距离最近的k个已知样本,然后根据这k个样本的类别来确定该未知样本的类别。在本文中,我们采用iris数据集,该数据集包含四个属性:花萼长度、花萼宽度、花瓣长度、花瓣宽度,以及三个类别:山鸢尾、变色鸢尾、维吉尼亚鸢尾。KNN算法具有简单、直观、易于理解等特点,适用于多分类和二分类问题,但其计算复杂度随着样本数量的增加而增加,也容易受异常值影响。在KNN算法中,常用的距离函数有欧氏距离、曼哈顿距离等。(2)选择距离最近的k个样本,并根据它们的类别来确定未知样本的类别。

qq_39605374的博客 1515

一文掌握DrissionPage的详细使用

是一个基于 Python 的网页自动化工具,主要用于网页数据的抓取、自动化操作和测试。它结合了 Selenium 和 Requests 的优点,提供了更简洁、高效的 API,适用于各种网页自动化任务。DrissionPage 是一个功能强大且易于使用的网页自动化工具,适用于各种网页自动化任务。希望本文的 DrissionPage 的基本使用方法和一些高级功能能够帮助到你。

数据知道的博客 1万+

输入一个整数和一棵二元树

输入一个整数和一棵二元树。 从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。 打印出和与输入整数相等的所有路径。 例如输入整数22 和如下二元树 10 / \ 5 12 / \ 4 7 则打印出两条路径:10, 12 和10, 5, 7。 使用递归+回溯的方法 思路: (1)若根节...

菜鸟的博客 2963

Python爬虫实战:爬取小红书数据做爆款分析,我破解了签名加密+移动端反爬(附完整代码)

爬取小红书数据的核心,不是“简单的HTTP请求”,而是“理解移动端接口的加密逻辑和反爬规则”——从x-s/x-t签名破解到移动端UA伪装,再到行为模拟,每一步都是对移动端爬虫的深度理解。这套方案的价值在于,不仅能稳定抓取小红书数据,还能从数据中拆解出有价值的爆款特征,真正把“数据”变成“洞察”。对程序员来说,小红书爬虫不仅是技术练手,更是了解新媒体平台数据逻辑的窗口。希望这篇分享能帮到做新媒体分析或爬虫进阶的小伙伴,也欢迎在评论区交流小红书反爬和爆款分析的更多技巧!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2057

程序员面试100题---4.在二元树中找出和为某一值的所有路径(树)

4.在二元树中找出和为某一值的所有路径(树) 输入一个整数和一棵二元树。 从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。 打印出和与输入整数相等的所有路径。 例如输入整数22和如下二元树    10     / /     5  12     /   /    4   7 则打印出两条路径:10, 12和10, 5, 7。 -------------

一蓑烟雨任平生,也无风雨也无晴! 642

【GlobalMapper精品教程】006:Excel表格(.xls)或文本(.txt .csv)坐标文件生成矢量点

原始的坐标数据如下图所示,其中坐标为Lat经度,LNG纬度,均为十进制度的形式,一般软件都支持十进制度的格式,如果不支持,你可以尝试使用度分秒的形式,图中的DDMMSS-LAT为纬度,DDMMSS-LNG为经度。打开globalmapper软件,点击【打开数据文件】,选择坐标数据文件(案例中的数据位配套实验数据包中的data006.rar)气象台站分布点坐标.xls。选择坐标系:本案例数据采用的是经纬度,因此选择Geographic(Latitude/Longitude),基准选择WGS84,点击确定。

智慧空间实验室 2569

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

flag2在二元树中找出和为某一值的所有路径 题目:输入一个整数和一棵二元树。 从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。 打印出和与输入整数相等的所有路径。 例如 输入整数

我写出了两种后续遍历,一种是递归,一种是非递归后续遍历,并且不毁坏原有二叉树。 可以输出任意一个二叉树叶子节点的路径长度,也可以达到题目要求!! # include # include typedef struct tree { int data; struct tree* lchild; struct tree* rchild; }Tree,*Ptree; typedef

a__white的博客 1100

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【面试题】在二元树中找出和为某一值的所有路径——Java实现

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

在梅边的专栏 2168

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

面试题:在二元树中找出和为某一值的所有路径

在二元树中找出和为某一值的所有路径 题目:输入一个整数和一棵二元树。打印出和与输入整数相等的所有路径。例如输入整数 22 和如下二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。则打印出两条路径:10, 12 和 10, 5, 7。

完全体 178

4. 微软面试题: 在二元树中找出和为某一值的所有路径(树)

题目:输入一个整数和一棵二元树。 从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。 打印出和与输入整数相等的所有路径。 例如 输入整数22和如下二元树     10     /   /     5    12    / \      4  7 则打印出两条路径:10, 12和10, 5, 7。 #include #include using nam

我的技术生活 940

程序员面试题精选(04)-在二元树中找出和为某一值的所有路径

<br />程序员面试题精选(04)-在二元树中找出和为某一值的所有路径<br />题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。<br />例如输入整数22和如下二元树<br />                                            10<br />                                           /   /<br />                

SURE 565

程序员面试题100题第04题——在二元树中找出和为某一值的所有路径

题目: 输入一个整数和一棵二元树。从根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。 分析: 当访问到某一结点时,把该结点添加到路径上,并累加当前结点的值。如果当前结点为叶结点并且当前路径的和刚好等于输入的整数,则当前的路径符合要求,我们把它打印出来。如果当前结点不是叶结点,则继续访问它的子结点。当前结点访问结束后,递归函数将自动回到父结点。因此

Notes 756

面试题06:在二元树中找出和为某一值的所有路径(未完待续)

题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。 例如输入整数22和如下二元树 10 / \ 5 12 / \ 4 7 则打印出两条路径: 10,12和10,5, 7。 二元树结点的数据结构定义为:struct BinaryTreeNode

yvhqbat的博客 369

微软面试题系列(四):在二元树中找出和为某一值的所有路径

     有了第一题作为基础,这一题写起来也相当简单。只是搜索的时候呢,可以剪枝一下。这个是搜索的技巧,用多了就自然有这个习惯了!     建树依然建立二元查找树,然后用深搜,用一个path数组把结点的值存储起来。用深搜打印路径比较方便。没有什么特殊和很难的地方。     这里需要注意的是:这个系列中我在系列(一)中上传的pdf文件里题目4的图形没对,可能会有误导。树的形状应该是 ...

weixin_34191845的博客 129

数据结构面试题1.2.5-在二元树中找出和为某一值的所有路径

package questions; import java.util.ArrayList; /** * @title 在二元树中找出和为某一值的所有路径 * @question 输入一个整数和一棵二元树 从树的根结点开始向下访问一直到叶结点所经过的所有结点形成一条路径。 打印出和与输入整数相等的所有路径 * 例如输入的整数22和如下二元树 *

Sayangnala的专栏 724

算法与数据结构面试题(4)-在二元树中找出和为某一值的所有路径

题目 题目:输入一个整数和一棵二元树。 从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。 打印出和与输入整数相等的所有路径。 例如输入整数22 和如下二元树 则打印出三条路径:10, 12 和10, 5, 7、10,5,4,3 二元树节点的数据结构定义为: struct BinaryTreeNode // a node i

doctorq 1456
上一篇: 【面试题】把二元查找树转变成排序的双向链表
下一篇: 【校园招聘】2013大众点评网软件研发岗笔试题
xiaoding133
博客等级 码龄19年 415粉丝 159原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值