欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

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

时间:2023-07-02
257、二叉树的所有路径

难度:简单

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。

叶子节点 是指没有子节点的节点。

思路

使用迭代法,从根节点开始到叶节点结束,利用StringBuilder记录下当前路径,发现到叶节点后将该路径加入到返回的List中

注意:在使用StringBuilder记录路径时候需要注意传入子程序的StringBuilder是当前StringBuilder的拷贝,因为传入的参数是引用类型,如果直接将原来的传入会导致结果返回的List中所有元素都是一样的

package cn.edu.xjtu.carlWay.tree.binaryTreePath;import cn.edu.xjtu.Util.TreeNode.TreeNode;import java.util.ArrayList;import java.util.List;public class Solution { public List binaryTreePaths(TreeNode root) { if (root == null) { return null; } List paths = new ArrayList<>(); StringBuilder path = new StringBuilder(); findPath(root, path, paths); return paths; } private void findPath(TreeNode node, StringBuilder path, List paths) { if (node != null) { StringBuilder temp_path = new StringBuilder(path); temp_path.append(node.val); if (node.left == null && node.right == null) { paths.add(temp_path.toString()); } else { temp_path.append("->"); findPath(node.left, temp_path, paths); findPath(node.right, temp_path, paths); } } }}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。