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

article/2025/9/20 2:24:30

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

      10   
      / \   
     5  12   
      / \    
      4    7

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

分析与解法:

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

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


代码如下:

[cpp]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. bool specialPath(Node *pRoot,Node *pNode,vector<int> &v)  
  2. {  
  3.     if(pRoot==NULL)  
  4.     {  
  5.         return false;  
  6.     }  
  7.     v.push_back(pRoot->m_value);  
  8.     bool found=false;  
  9.     if(pRoot==pNode)//还是比较指针稳妥,节点值有可能重复  
  10.     {  
  11.         found=true;  
  12.         for(int i=0;i<v.size();i++)  
  13.             cout<<v[i]<<" ";  
  14.         cout<<endl;  
  15.     }  
  16.     if(!found && pRoot->m_pLeft)  
  17.     {  
  18.         found=specialPath(pRoot->m_pLeft,pNode,v);  
  19.     }  
  20.   
  21.     //一旦左子树中找到节点,就不需要再遍历右子树  
  22.     if(!found && pRoot->m_pRight)  
  23.     {  
  24.         found=specialPath(pRoot->m_pRight,pNode,v);  
  25.     }  
  26.    //pop_back函数只删除最后一个元素
  27.     v.pop_back();  
  28.     //不要忘记这个返回found  
  29.     return found;  
  30. }  


http://chatgpt.dhexx.cn/article/w69v9d5R.shtml

相关文章

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

算法 求二叉树根节点到指定节点的路径 author:Jingdai date:2020.11.05 题目描述 给你一个棵二叉树&#xff0c;再给你一个指定的节点&#xff0c;求根节点到指定节点的路径。 如图&#xff0c;比如让你求到 4 节点的路径&#xff0c;则应该返回的路径为 [0, 1, 4] 。 思路 …

二叉树节点和度的关系及特点

写在前边的话&#xff1a;你的支持是我写作的动力&#xff0c;有帮助到你的话麻烦点赞加收藏呦。感激不尽&#xff01;如有错误也请留言指正 目录 一、完全二叉树 节点总数的特点 二、二叉树 度的特点 1.n0与n2的关系 2.节点总数和度的关系 三、例题 例题一 例题二 例题三 一…

二叉树的节点

1、前序&#xff1a;根结点第一个访问&#xff0c;然后访问左、右孩子&#xff1b; 后序&#xff1a;根结点最后访问&#xff0c;开始先访问左、右孩子&#xff1b; 中序&#xff1a;根结点第二个访问&#xff0c;最先访问左孩子&#xff0c;最后访问右孩子 前序序列&#x…

求二叉树的节点个数

如果是空树&#xff0c;则结点个数为0&#xff0c;递归结束 否则结点个数为左子树的结点个数右子树的结点个数1 【算法描述】 int NodeCount(BiTree T) {if (T NULL)return 0; // 如果是空树&#xff0c;则结点个数为0&#xff0c;递归结束elsereturn NodeCount(T->lchild…

数据结构-第五章 二叉树

一、树 1.树的概念 树是一种非线性的数据结构&#xff0c;是由n个结点组成的一个集合。每一棵树都可以被分解为根节点和n棵子树构成(n>0) 根节点(Root)&#xff1a;没有父结点的结点称为根节点&#xff0c;如A 父结点&#xff1a;含有子结点的结点&#xff0c;如A是B的父…

零基础学二叉树

目录 二叉树的定义&#xff1a; 二叉树的应用&#xff1a; 认识二叉树&#xff1a; 二叉树的基本形式&#xff1a; 二叉树的节点&#xff1a; 二叉树的高度和深度&#xff1a; 二叉树的子树&#xff1a; 二叉树的度&#xff1a; 满二叉树&#xff1a; 完全二叉树&…

npm 升级

npm 版本升级 mac版本 npm install -g npm1.网上有看到别的同学碰到升级报错的情况&#xff1a;可以试试用管理员身份安装&#xff1a; sudo npm install -g npm windows版本 npm install -g npm2.安装完成之后&#xff0c;输入npm -v检查是否升级成功&#xff0c;我是从6.…

npm 升级依赖包

首先安装升级插件 npm-check-updates $ npm install -g npm-check-updates # 或者 $ cnpm install -g npm-check-updates ncu 是 npm-check-updates 的缩写命令 输入ncu命令&#xff0c;可以看到需要升级安装包 # 查看更新ncu 可以看到有好几个包要更新 # 查看所有ncu命令…

npm升级自身版本

查看版本&#xff1a;npm -v 查看版本详情&#xff1a;npm version 用命令npm view npm version&#xff0c;运行后会输出到目前为止npm的所有版本&#xff0c;如图&#xff1a; 升级为特定的版本&#xff0c;命令:npm -g install npm4.0.2,运行后并检验版本如图&#xff1a;…

npm 升级后,无法运行

更新npm npm install -g npm9.2.0问题&#xff1a;无法加载文件 D:\Program Files\nodejs\npm.ps1&#xff0c;因为在此系统上禁止运行脚本。 解决&#xff1a;依次输入如下命令 get-ExecutionPolicySet-ExecutionPolicy -Scope CurrentUserRemoteSignedget-ExecutionPolicy…

npm升级

啥时候升级&#xff1f; 在使用npm安装依赖包&#xff0c;终端出现以下提示 New major version of npm available! 6.13.4 -> 8.5.5 Changelog: https://github.com/npm/cli/releases/tag/v8.5.5 Run npm install -g npm to update! 如何升级 npm install npm -g升级报…

npm升级导致npm报错

文章目录 问题解决其他 问题 事情起因在于&#xff0c;我在执行npm init -y的时候&#xff0c;提示我可以升级 好家伙&#xff0c;脑子一时不清醒&#xff0c;我就执行了。以前看到都没想过要执行&#xff0c;今天不知道怎么了&#xff0c;也许是早饭吃多了撑的 : ) 执行完之…

npm 升级遇到的问题

问题&#xff1a;在VUE项目中&#xff0c;当前的npm版本有点低&#xff0c;想对npm进行升级&#xff0c;将npm从6.14.13的版本升级到8.0.0版本&#xff0c;运行npm install -g npm8.0.0报错 解决方法&#xff1a; 找到node文件夹下面的npm.cmd&#xff0c;将它重命名为npmx.cm…

npm 升级node.js

升级NPM 到最新 查看npm 版本&#xff1a; npm -v 更新到最新版本&#xff1a; npm install npmlatest -g 升级Node.js 从node官网下载最新node.js 安装包覆盖原理的node.js 最新node.js 下载 winr cmd 输入 where node 查看原来node 安装路径 安装成功后查看node 版本

如何升级npm 和 安装nvm 及 升级node.js

1.NPM如何升级&#xff1f; 1.1.可以使用NPM自带的命令进行升级&#xff1a; npm install -g npm 注&#xff1a;这个命令会安装最新的&#xff0c;安装到全局。 2.查看NPM版本 npm -v 注&#xff1a;要是版本过低&#xff0c;可使用上面所说命令进行升级。 3.怎么把node.js升…

算法优化(1):基础知识-凸集,单峰函数,拟凸函数与凸函数,函数凹凸性定义

本文笔记介绍我最近学习的算法优化的基础知识&#xff0c;有&#xff1a; 最优化问题的一般形式约束问题的分类及形式优化问题的分类单峰函数&#xff08;Unimodal function&#xff09;的定义拟凸函数&#xff08;Quasiconvex function&#xff09;的定义凸集&#xff08;conv…

deep_learning_凹凸函数

什么是凸函数及如何判断一个函数是否是凸函数 t元j 一、什么是凸函数 对于一元函数f(xf(x)&#xff0c;如果对于任意tϵ[0,1]tϵ[0,1]均满足&#xff1a;f(tx1(1−t)x2)≤tf(x1)(1−t)f(x2)f(tx1(1−t)x2)≤tf(x1)(1−t)f(x2)&#xff0c;则称f(x)f(x)为凸函数(convex function…