给定一个二叉树,输出从跟节点到所有叶子的路径。如下面的二叉树,输出路径的集合["1->2->5", "1->3"]。

方法一:使用递归算法,把经过的路径作为参数往下传

    public List<String> binaryTreePaths(TreeNode root) {LinkedList<String> result = new LinkedList<String>();if(root == null) return result;getPath(root, result, root.val + "");return result;}public void getPath(TreeNode root, LinkedList<String> result, String str){if(root.left == null && root.right == null){result.add(str);return;}if(root.left != null)getPath(root.left, result, str + "->" + root.left.val);if(root.right != null)getPath(root.right, result, str + "->" + root.right.val);}

方法二:可以不用辅助函数,直接在路径集合上操作,把当前节点添加到下级返回的每一个路径上

public List<String> binaryTreePaths(TreeNode root) {List<String> paths = new LinkedList<>();if(root == null) return paths;if(root.left == null && root.right == null){paths.add(root.val+"");return paths;}for (String path : binaryTreePaths(root.left)) {paths.add(root.val + "->" + path);}for (String path : binaryTreePaths(root.right)) {paths.add(root.val + "->" + path);}return paths;     }

方法三:不用递归,而使用队列(BFS)或者栈(深度优先),维持节点和字符串两个队列(或栈),每访问一个节点,相应字符串进行同步更改

public List<String> binaryTreePaths(TreeNode root) {List<String> list=new ArrayList<String>();Queue<TreeNode> qNode=new LinkedList<TreeNode>();Queue<String> qStr=new LinkedList<String>();if (root==null) return list;qNode.add(root);qStr.add("");while(!qNode.isEmpty()) {TreeNode curNode=qNode.remove();String curStr=qStr.remove();if (curNode.left==null && curNode.right==null) list.add(curStr+curNode.val);if (curNode.left!=null) {qNode.add(curNode.left);qStr.add(curStr+curNode.val+"->");}if (curNode.right!=null) {qNode.add(curNode.right);qStr.add(curStr+curNode.val+"->");}}return list;
}

二叉树:输出根节点到叶子的路径相关推荐

  1. 每天一道LeetCode-----计算二叉树所有根节点到叶子节点的和

    Sum Root to Leaf Numbers 原题链接Sum Root to Leaf Numbers 二叉树每个从根节点到叶子节点的路径都代表一个整数,计算所有整数的和 只需要遍历一遍整棵数即可 ...

  2. 每天一道LeetCode-----以字符串的形式输出二叉树所有从根节点到叶子节点的路径

    Binary Tree Paths 原题链接Binary Tree Paths 将二叉树中所有从根节点到叶子节点的路径以字符串的形式输出出来 直接遍历即可,注意只有左右子节点都是空节点时才叫叶子节点 ...

  3. java计算二叉树的节点最小值_求二叉树根节点到叶子节点路径和的最小值:遍历(递归+非递归)...

    昨晚中兴笔试题,第一题是给定二叉树,每个节点的数据结构是 value,left,right,比较根节点到各个叶子节点路径和的大小,输出路径和的最小值.(补充:用ArrayList可以存储) 以前没做过 ...

  4. 常考数据结构与算法----给定一个二叉树和一个值 sum,请找出所有的根节点到叶子节点的节点值之和等于sum 的路径,

    题目描述 给定一个二叉树和一个值sum,请找出所有的根节点到叶子节点的节点值之和等于sum 的路径, 例如: 给出如下的二叉树,sum=22, 返回 [ [5,4,11,2], [5,8,9] ] 示 ...

  5. leetcode 112 --- 二叉树根节点到叶子节点和为指定值的路径

    1 题目 给定一个二叉树和一个值sum,请找出所有的根节点到叶子节点的节点值之和等于sum 的路径. 2 解法 用递归的方法,如果当前不是叶子节点,就把sum减去当前的值,并把当前节点当作路径节点pu ...

  6. 找二叉树根节点到叶子结点最长路径

    void Findpath(BiTree T){//后序遍历法寻找从根节点到叶子结点最长路径BiTree stack[MaxSize],path[MaxSize],p=T,r;int top=-1,m ...

  7. JAVA8 获取叶节点_Java找出所有的根节点到叶子节点的节点值之和等于sum 的路径...

    题目描述 给定一个二叉树和一个值 sum,请找出所有的根节点到叶子节点的节点值之和等于 sum 的路径, 例如: 给出如下的二叉树,sum=22, 返回 [ [5,4,11,2], [5,8,9] ] ...

  8. 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。

    给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树. 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数. 节点的右子树只包含 大于 当前节点的数. 所有左子树和右子 ...

  9. java根节点到叶子节点_二叉树根节点到叶子节点的所有路径和

    我觉得这个题目和剑指offer中的一道题目非常相似.先说这个题: 解题思路:从根结点开始,当每访问到一个结点,我们把该结点添加到路径上,并"累加" 该结点的值,这里"累加 ...

最新文章

  1. 【笔记】shellcode相关整理
  2. 如何存储Session
  3. mysql connector安装教程_通过安装MySQL Connector/Net实现VS2017 C#编程连接MySQL数据库-网络教程与技术 -亦是美网络...
  4. 对于dts的理解和分析
  5. Workaround for Search for my account in MyAppointment
  6. Spring AOP知识点简介
  7. java object... arguments_Java面试之基础题---对象Object
  8. 《统一沟通-微软-实战》-3-部署-Exchange 2010-2-自定义安装
  9. VS.左侧_蓝黄绿_竖线
  10. 从零开始学习MXnet(四)计算图和粗细粒度以及自动求导
  11. 实用技术会议通知:我知道你不会来,可是我不说是我的错
  12. php ajax可编辑表格,jquerAjax+php实现表格的增删改查(带数据库)
  13. 蛋白胶条质谱鉴定实验
  14. jxl生成excel 设置隐藏列 隐藏行
  15. OpenGL LookAt函数理解
  16. QCC512x QCC302x 使用I2C驱动外设(Bitserial)
  17. 排序算法整理(冒泡、选择、快排、堆排序、希尔、归并)
  18. tkinter模块 视窗设计相关操作
  19. jwt鉴权(react express jsonwebtoken)
  20. 阿里云物联平台产品、设备及物模型添加模拟数据(实操)

热门文章

  1. Windows+iPad扩展屏幕-随航功能
  2. 沐阳Git笔记02Git工作区与缓存区
  3. php redis中文手册——《redis中文手册》 php版
  4. 有钱人的心肠更硬吗?
  5. 苹果申请新专利,iPhone或取消刘海设计
  6. android 目录作用,Android中各级目录的作用说明
  7. java实现退出重启后保存_JAVA实现关机、重启等
  8. 同时支持手机号、用户名、邮箱登录
  9. 什么是联想能力?如何提高联想能力?
  10. pymysql.err.OperationalError: (1054, “Unknown column ‘xxx‘ in ‘where clause‘“)问题解决方法