给定二叉树,输出所有从根节点到叶节点的路径!
如上图二叉树所示,所有的路径应该是:[[10,1,5,12],[10,1,5,11],[10,1,7,9],[10,2,8,3],[10,2,8,20]]

     public static void getPaths(BinaryTreeNode root,List<List<Integer>> result,List<Integer> tempList){if(root==null)return;//节点为空,则跳出这层递归tempList.add(root.data);//将此节点数值放入临时链表if(root.left==null&&root.right==null)result.add(new ArrayList(tempList));//如果节点同时不存在左右孩子,则说明是完整路径,将存放此路径的tempList放入result中getPaths(root.left, result, tempList);//放入左孩子getPaths(root.right, result, tempList);//放入右孩子tempList.remove(tempList.size()-1);//将链表末尾删掉}


时间复杂度是O(n),空间复杂度是O(n)存放所有节点,用于栈递归


第二题:判断是否存在路径的数据和等于给定值,也就是说,判断是否存在一条从根节点到任意节点的路径,其经过的数据和为给定值。
解题策略:1,可以使用以上的方式,然后各个判断;2,新的方式,在调用其孩子节点之前,先把target值减去该节点的值。然后运行过程检查target是否为0。
方法一:使用前一个方法

public static void getPaths(BinaryTreeNode root,List<List<Integer>> result,List<Integer> tempList){if(root==null)return;//节点为空,则跳出这层递归tempList.add(root.data);//将此节点数值放入临时链表if(root.left==null&&root.right==null)result.add(new ArrayList(tempList));//如果节点同时不存在左右孩子,则说明是完整路径,将存放此路径的tempList放入result中getPaths(root.left, result, tempList);//放入左孩子getPaths(root.right, result, tempList);//放入右孩子tempList.remove(tempList.size()-1);//将链表末尾删掉}
        List<List<Integer>> result=new ArrayList();List<Integer> tempList=new ArrayList<Integer>();getPaths(root, result, tempList);for(int i=0;i<result.size();i++){int target=27;//目标值List<Integer> temp=result.get(i);//获取每一个路径for(int j=0;j<temp.size();j++){target-=temp.get(j);//判断该路径的和是否等于目标值}if(target==0){System.out.println(true);return;}}System.out.println(false);

方法二:

    public static boolean isGetPath(BinaryTreeNode root,int target){if(root==null)return target==0;//如果所有节点已被访问且target==0,则返回trueelse{//检查两颗子树int temp=target-root.data;return isGetPath(root.left, temp)||isGetPath(root.right, temp);}}
时间复杂度是O(n),空间复杂度是O(n)

对于一颗给定的二叉树,输出所有从根节点到叶节点的路径相关推荐

  1. Leetcode 129求根节点到叶节点数字之和、104二叉树的最大深度、8字符串转换整数(atoi)、82删除排序链表中的重复元素II、204二分查找、94二叉树的中序遍历、144二叉树的前序遍历

    Top1:Leetcode 129求根节点到叶节点数字之和 官方题解:https://leetcode.cn/problems/sum-root-to-leaf-numbers/solution/qi ...

  2. 【leetcode-DFS】求根节点到叶节点数字之和/二叉树的最大路径和/路径总和/左叶子之和/树的直径

    文章目录 求根节点到叶节点数字之和 深度优先搜索 广度优先搜索 二叉树的最大路径和 DFS 路径总和1 深度优先搜索 广度优先搜索 路径总和2 回溯法 广度优先搜索 左叶子之和 递归 DFS 树的直径 ...

  3. 数据结构作业之输出树的每一条从根节点到叶节点的路径

    数据结构作业,输出树的每一条从根节点到叶节点的路径 #include <stdio.h> #include <stdlib.h> typedef struct tree {ch ...

  4. 【二叉树】求根节点到叶节点数字之和

    0x00 题目 给你一个二叉树的根节点 root 树中每个节点都存放有一个 0 到 9 之间的数字 每条从 根 节点到 叶 节点的路径都代表一个 数字 例如,从 根 节点到 叶 节点的路径 1 -&g ...

  5. 二叉树根结点到叶节点的最短距离

    给定一棵二叉树,找出它的最小深度.最小深度是沿着从根节点到最近叶节点的最短路径的节点数目. 思路一:递归. 当节点左右子树都为null时,返回0 当左子树为null,返回右子树递归+1: 当右字数为n ...

  6. 二叉树的路径(根节点到叶节点)Binary Tree Paths

    为什么80%的码农都做不了架构师?>>>    问题: Given a binary tree, return all root-to-leaf paths. For example ...

  7. 求二叉树根节点到叶节点的所有路径

    257. 二叉树的所有路径 难度:简单 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径. 叶子节点 是指没有子节点的节点. 思路 使用迭代法,从根节点开始到叶节点 ...

  8. 求二叉树指定结点到根的路径c语言,二叉树根节点到叶子结点和为指定值的路径...

    题目描述 image.png 题解 解题思路与二叉树根节点到叶节点的所有路径和一题相似,都是采用递归算法.但这个题加了一点,要求保存路径到vector中. 为了保存路径,这里给递归函数传递一个vect ...

  9. 二叉树:叶节点的一些操作

    目录 1.求叶子节点之和 2.求叶子节点的父节点之和 3.求左叶子节点 leetcode404 4.层数最深叶子节点之和leetcode1302 5.层数最浅叶子节点之和 6.删除给定值的叶子节点le ...

最新文章

  1. html 失效,如何让css失效?
  2. mysql期末考试试卷_mysql试题
  3. 【讨论】初学者拿到2440、6410 等开发板应该怎么学习?
  4. Oracle统计信息锁,oracle 由于impdp 引起的表统计信息被锁 ORA-20005: object statistics are locked...
  5. python自动化框架(unnitest+selenium+htmlreport)
  6. scp从另一台服务器下载或者上传文件
  7. 双目测距(二)--双目标定与矫正
  8. 今天安利一个超牛叉的黑客入侵的特效网页,我第一次打开就被惊艳到了
  9. mtk现在不支持语言的字库和输入法,支持的字库和输入法
  10. Python算法:关于数据的线性增长与二次方增长的比较
  11. HZOI20190819模拟26题解
  12. 3600S软件测试工资,软件测试工资能拿到多少?谁说软件测试收入低?
  13. android 不停弹出权限,Android部分手机“后台弹出界面权限”解决方案
  14. 完整的生产车间管理流程是怎样的?六大步骤分享
  15. 传奇列表获取失败与登录器太老怎么解决
  16. 【深度学习】BERT变体—BERT-wwm
  17. 文件上传与下载(一)
  18. Linux进程通信——匿名管道、命名管道、管道的特性和共享内存
  19. 量子计算机模拟人类,量子物理学家模拟推测:我们三维世界的演变可能早已被编程好...
  20. 1.3寸IIC OLED SSD1106控制的oled显示问题解决方案

热门文章

  1. html如何既能应用于pc端也能用于手机端_如何选择一个 vue ui 框架?
  2. goLang 如何开发 windows 窗口界面
  3. 倒计时 限制次数记录 公共操作/验证的静态类
  4. MyBatis从入门到精通(十):使用association标签实现嵌套查询
  5. 51单片机实训项目之“万年历”代码原理详解
  6. 真香啊,Python 资深开发者用的贼溜的9个实用技巧
  7. Android D/dalvikvm : GC_FOR_ALLOC freed
  8. 6-1 简单创建对象 (10分) java
  9. vue中写svg组件svg图片加载不出来
  10. js如何截取某个字符串前面所有的字符串