面试经典(16)--二叉树根节点到指定节点的路径

python实现二叉树到指定节点的路径 利用python实现二叉树根节点到指定节点的路径 代码可能不太好, 欢迎大家一起讨论 class Node(object): def __init__(self, value): self.value = value self.left = None self.right = None class Tree(object): def __init__(self): self.root = None # 插入节点 def insert(self, value): node = 阅读详情

题目描述:给定一棵二叉树和二叉树中一个节点,输出根节点到指定节点间的路径。

      10   
      / \   
     5  12   
      / \    
      4    7

指定节点7,那么输出路径应该是10-5-7。

分析与解法:

这个题目是在我做过蛮多二叉树的题目之后总结的一道题目。发现很多题目都可以抽象出来这个题目。其实二叉树本来就是最典型的递归数据结构,只要完全掌握三种遍历方法,一切题目都是浮云。

这道题目和博客http://blog.youkuaiyun.com/getnextwindow/article/details/23326843输出所有满足条件的路径颇为相似。只不过这道题目只要找到目的路径就要尽快返回,不要再遍历下去。不多解释,我会在代码中给予注释。


代码如下:

bool specialPath(Node *pRoot,Node *pNode,vector<int> &v)
{
	if(pRoot==NULL)
	{
		return false;
	}
	v.push_back(pRoot->m_value);
	bool found=false;
	if(pRoot==pNode)//还是比较指针稳妥,节点值有可能重复
	{
		for(int i=0;i<v.size();i++)
			cout<<v[i]<<" ";
		cout<<endl;
		return true;
	}
	if(!found && pRoot->m_pLeft)
	{
		found=specialPath(pRoot->m_pLeft,pNode,v);
	}

	//一旦左子树中找到节点,就不需要再遍历右子树
	if(!found && pRoot->m_pRight)
	{
		found=specialPath(pRoot->m_pRight,pNode,v);
	}
	if(!found)
		v.pop_back();
	return found;
}

注: if(!found) v.pop_back(),只有在左右子树都没发现目标节点才弹出。如果我们仅仅在上面的函数中输出路径,那么没有这条判定语句也是对的,但是如果想使用v保存路径并在函数之外使用,必须加上这条语句,因为没有判定语句,函数回溯过程会弹出v中节点。希望关注和http://blog.youkuaiyun.com/getnextwindow/article/details/23326843的区别,上面链接的这篇要求所有满足条件的路径,所以只要知道满足的就打印,然后回退过程要弹出v节点,和本题刚好相反。


嵌入式面试常见问题(六)—各大公司面试题_嵌入式软件工程师面试题目及答案 1、简历中有的项目,一定要会,不会的东西不写,写上去的东西保证自己每个细节都懂,也就是确实是自己做的项目,不是捏造的项目。2、大厂面试注重基础,因为大公司会培养你,只要你基础扎实就行,所以基础很重要,整个面试一个多小时,大部分时间在linux系统、编程能力、数据结构、计算机网络基本概念上。3、大厂面试喜欢问你对于某个常见的东西自己的理解,因为书上的名词大家都会说,但是你自己理解的肯定是不一样的。比如富士康的一个面试官问过:你认为OSI七层网络模型和生活中给的什么很像?答案:快递业务。 阅读详情

相关推荐

深度学习与神经网络有什么区别

人工神经网络(ArtificialNeuralNetwork,即ANN)是从信息处理角度对人脑神经元网络进行抽象,是20世纪80年代以来人工智能领域兴起的研究热点,其本质是一种运算模型,由大量的节点(或称神经元)之间相互联接构成,在模式识别、智能机器人、自动控制、生物、医学、经济等领域已成功地解决了许多现代计算机难以解决的实际问题,表现出了良好的智能特性。...

super67269的博客 8487

7-2 求根结点到x结点的路径 分数 15

【代码】7-2 求根结点到x结点的路径 分数 15。

Ape's IT Blog 1090

STC8H DMA 串口1全双工中断方式收发通讯C语言

串口1全双工中断方式收发通讯程序。 通过PC向MCU发送数据, MCU将收到的数据自动存入DMA空间. 当DMA空间存满设置大小的内容后,通过串口1的DMA自动发送功能把存储空间的数据原样返回. 用定时器做波特率发生器,建议使用1T模式(除非低波特率用12T),并选择可被波特率整除的时钟频率,以提高精度。

czhaii的专栏 1466

求二叉树根节点到指定节点的路径

算法 求二叉树根节点到指定节点的路径 @author:Jingdai @date:2020.11.05 题目描述 给你一个棵二叉树,再给你一个指定的节点,求根节点到指定节点的路径。 如图,比如让你求到 4 节点的路径,则应该返回的路径为 [0, 1, 4] 。 思路 利用二叉树的先序遍历,寻找指定的节点,同时用一个栈 stack 记录遍历到的节点,当找到需要的节点后立即返回结果。但是这样有一个问题,就是在遍历中 stack 记录的路径中包含一些其他的节点,比如要求上图中到 4 节点的路径,则遍历到 4

qq_41512783的博客 1万+

SAP PS模块实战指南:从项目启动到结算的全流程解析

本文详细解析SAP PS模块在项目管理中的全流程应用,从项目启动到结算的关键操作与实战技巧。通过WBS设计、预算控制和资源调配等核心功能,帮助管理者高效协调项目进度与成本,特别适用于交付型和成本型项目管理。掌握PS模块能显著提升项目管理效率与精准度。

weixin_42553471的博客 447

【TIDB】TiDB认证考试PTCA 练习题 题库

TiDB认证考试PTCA 练习题 题库

DBA之路的博客 4718

java--数据结构--二叉树根节点到指定节点的路径

二叉树根节点到指定节点的路径这个算法是很多算法的基础。 比如说: 找节点的最近公共祖先,节点最大距离等都会用到此算法,所以要好好理解一下。

王欢的博客 8416

基于Matlab模拟RANS湍流——详细分析与源代码

在模拟过程中,我们首先定义了模拟所需的参数,包括流体的动力黏度和密度,以及边界条件和网格分辨率。接下来,通过求解平均值方程和湍流涨落方程,我们模拟了湍流的演化过程。在本文中,我们将使用Matlab对RANS湍流进行模拟,并提供相应的源代码。RANS湍流模拟的基本思想是将流场的变量分解为平均值和涨落值,并通过求解平均值方程和湍流涨落方程来描述流场的演化。请注意,以上代码仅为示例,实际的RANS湍流模拟可能需要更复杂的算法和模型。接下来,我们将求解RANS方程,包括平均值方程和湍流涨落方程。

ByteKnight的博客 861

【二叉树】指定结点到根节点的路径

利用后序遍历非递归的思想,结合栈。 如果某结点的左右子树均未找到指定结点,则将该结点出栈,那就需要标记一下当前结点的访问状态。 直到找到结点,或者遍历完树仍未找到(此时栈空)。 typedef struct BNode { int data; BNode *lchild,*rchild; }*BTree; typedef struct { BNode* bt; ...

hr786250678的博客 7607

【产品经理修炼之道】-如何搭建企业级账务系统?

笔者公司的业务模式具有一定的独特性,不同于我们常见的市面上供应链类公司的进销存模式。公司主要为各大银行和金融机构提供信贷领域的风控服务,客户主要通过请求公司的数据产品接口产生费用,可以简单地理解为请求一次接口收费0.5元,一个月若是有1w人请求同一个接口则公司需要收费5000元。

xiaoli8748的专栏 5404

1、vectorCast单元测试常用操作

进入软件主页面,点击file,选择set working directory,随便选择一个保存该项目的目录即可。

weixin_59334478的博客 2155

题解 | #二叉树根节点到叶子节点和为指定值的路径#

楼主拿了上海一家IC独角兽的offer,给的48w工资+25w股权激励,公司业务主要是CPU,GPU的研发,另外面了成都的华为(通信领域芯片研发),对接hr说机。武汉烽火通信,网络产出线逻辑部门,感觉给的薪资还能接受,但网上怎么一搜烽火全是劝退的,吓人,有没有懂的好兄弟来指点一下啊 #晒一晒我的offer# #23届找。江西南昌人,双非本,211硕,offer选择1.中车株洲所,在湖南株洲,时代电气国家变流中心,10*15,福利比较多,公积金一个月2400,政府人才补贴2.4w。124加班,偶尔出差。

2301_79125642的博客 4327

Python爬虫教程:抓取Android或iOS应用中的数据

随着智能手机的普及,移动应用程序已经成为我们生活中不可或缺的一部分。从社交媒体、在线购物到金融服务和健康管理,几乎所有领域都有相应的手机应用程序(App)服务用户。而这些应用程序通常会存储大量的数据,例如用户行为、产品信息、订单记录等。如果我们能有效地抓取这些数据,可以为数据分析、商业智能、用户行为分析等提供有力支持。本文将重点介绍如何使用Python爬虫技术抓取Android或iOS应用中的数据,尤其是如何从这些应用的后端接口、存储、或网页中提取数据。我们将探讨如何通过反向工程技术访问移动应用中的API接

2201_76125261的博客 801

求二叉树指定结点到根结点的路径c++ 非常详细。

看了很多 没有看见完整的代码 我喜欢喂饭喂到嘴边。 部分代码参考16 二叉树:以x为根的子树的深度_DHU杨骅麟(紫外线过敏)的博客-优快云博客 面试经典(16)--二叉树根节点到指定节点的路径_nginux的博客-优快云博客_二叉树根节点到目标节点路径 运行示例: #include<iostream> #include<stack> #include<vector> using namespace std; struct Node { ...

Ultravioletrays的博客 4464

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C语言【23道】经典面试题【下】

flag = 0;for(j = 0;t = x;x = y;y = t;int i;t = x;x = y;y = t;int i, num;printf(“排序前:”);for(i = 1;i

2401_84411522的博客 842

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

二叉树中的那些常见的面试题

关于二叉树 二叉树作为树的一种,是一种重要的数据结构,也是面试官经常考的东西。昨天看了一下关于树中的 面试题,发现二叉树中的面试题比较常见的题型大概有下面几个:创建一颗二叉树(先序,中序,后序)、遍历一颗二叉树(先序,中序,后序和层次遍历)、求二叉树中叶子节点的个数、求二叉树的高度、求二叉树中两个节点的最近公共祖先、打印和为某一值的全部路径、求某一节点是否在一个树中等等。 再详细的说这些面试...

good575654643的博客 122

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

二叉树最大路径和:后序遍历与全局变量的经典算法解析

二叉树作为基础数据结构,其遍历方式深刻影响着算法设计。递归与后序遍历是树类问题中的核心技巧,能够自底向上收集子树信息。在求解最大路径和这类优化问题时,我们定义每个节点的“贡献值”,通过后序遍历计算左右子树的最优增益,并利用全局变量记录允许“拐弯”的路径结果。值得注意的是,对于负数分支,可直接舍弃以保持路径和最大化。此类算法在时间复杂度上达到O(n),空间复杂度与树高相关,广泛应用于网络路径规划、树形动态规划等场景。理解后序遍历+全局变量的组合,是攻克LeetCode 124等经典题目的关键。

weixin_42569329的博客 312
上一篇: 面试经典(17)--二叉树中和为某一值的路径
下一篇: 面试经典(15)--判定是否是平衡二叉树
OS技术解密
博客等级 码龄16年 3760粉丝 189原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值