二叉树专题--输出根节点到所有叶子节点的路径
来源:互联网 发布:linux硬盘分区命令 编辑:程序博客网 时间:2024/04/29 04:43
1.题目
Given a binary tree, return all root-to-leaf paths.
For example, given the following binary tree:
1
/ \
2 3
\
5
All root-to-leaf paths are:
[“1->2->5”, “1->3”]
2.解法
新建一个名为arrayListSingle的ArrayList,存放遍历过的路径,采用前序遍历的方式,每遍历一个子节点就将正在遍历的节点存入arrayListSingle,每当从子节点遍历返回时,例如上面题中给的例子里从5返回2时,就将arrayListSingle的最后一个元素,也就是刚遍历过的子节点删除,当发现正在遍历的节点没有子节点的时候,就说明走到了叶子节点位置,arrayListSingle里存的就正好是一条从根节点到该叶子的路径,这时就将arrayListSingle里的路径以String形式存到最终结果List里。具体代码如下:
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public List<String> binaryTreePaths(TreeNode root) { // 存放最终的所有从根到叶子的路径 ArrayList<String> arrayList = new ArrayList<>(); // 对根节点为空这种特殊情况的处理 if(root == null) return arrayList; // 储存遍历的路径 ArrayList<Integer> arrayListSingle = new ArrayList<>(); // 先把根节点存进去 arrayListSingle.add(root.val); // 开始递归前序遍历二叉树 go(root,arrayListSingle,arrayList); return arrayList; } public static void go(TreeNode node,ArrayList<Integer> arr, ArrayList<String> arrayStr) { // 遍历左节点 if(node.left != null) { // 在遍历的路径中添加马上开始遍历的左节点,开始遍历左节点 arr.add(node.left.val); go(node.left,arr,arrayStr); // 遍历完左节点,从遍历的路径中删除左节点 arr.remove(arr.size() - 1); } // 遍历右节点 if(node.right != null){ // 在遍历的路径中添加马上开始遍历的右节点,开始遍历右节点 arr.add(node.right.val); go(node.right,arr,arrayStr); arr.remove(arr.size() - 1); } // 当左右节点都空时,说明这个节点是叶子节点,把当前路径处理下格式,放到最终的结果list中 if(node.left == null && node.right == null) { String temp = "" + arr.get(0); for (int i = 1; i < arr.size(); i++) { temp = temp + "->" + arr.get(i); } arrayStr.add(temp); } }}
阅读全文
0 0
- 二叉树专题--输出根节点到所有叶子节点的路径
- 二叉树基本操作(输出所有叶子节点到根节点的路径)
- 找出二叉树所有到叶子节点的路径
- 打印二叉树从根节点到叶子节点的所有路径
- 二叉树所有根到叶子节点路径打印
- 二叉树系列——路径系列:根节点到子节点的路径以及根节点到叶子节点的所有路径
- 找出所有从根节点到叶子节点路径和等于n的路径并输出
- 找出所有从根节点到叶子节点路径和等于n的路径并输出
- Binary Tree Paths 二叉树所有从跟节点到叶子节点的路径
- 二叉树-输出树中从根到每个叶子节点的路径
- c++二叉树(统计叶节点,判断两颗二叉树是否相等,交换二叉树的左孩子右孩子,输出叶子到根节点的路径)
- 二叉搜索树的最短路径,从根节点到叶子节点
- 寻找二叉树中长度为k的路径(根节点到叶子节点)
- 数据结构--二叉树--输出树中从根到每个叶子节点的路径(树遍历算法的应用) .
- 输出二叉树的叶子节点
- 对于一颗给定的二叉树,输出所有从根节点到叶节点的路径
- 求从根节点到叶子节点的所有路径组成的数的和
- 输出所有根节点到叶子节点的长度(以二叉排序树为例)
- (三) MySQL 全文索引(mysqlcft)支持中文的插件安装使用
- Spring batch 第 1 部分:使用 Spring Batch 构建企业级批处理应用
- (四) MYSQL全文索引 sphinx + coreseek 支持中文
- Leetcode 647. Palindromic Substrings
- (五) MYSQL性能优化之 Coreseek 的配置文件
- 二叉树专题--输出根节点到所有叶子节点的路径
- (六) MYSQL性能优化 压力测试工具(ab.exe)
- Eclipse安装及配置JDK环境变量
- 第一篇
- (二) firewalld 跟systemctl 的基本使用
- 剑指offer-数值的整数次方
- Windows Practice_闹钟(二)_简易记事本
- react-native 一种简明构建复杂三元运算逻辑的方法
- PHP基础(一) 表单传值 以及 文件上传