• Java数据结构之257二叉树的所有路径


    二叉树的所有路径

    给定一个二叉树,返回所有从根节点到叶子节点的路径。

    算法分析:

    1. 假设起始节点为1;先搜索1节点的右子节点为2,此时将1节点置为已搜索状态;判断2节点是否为已搜索状态,若未搜索,则将2节点置为已搜索状态;每次都优先搜索判断右侧邻接节点;
    2. 如图所示,若此时已搜索至2节点,发现右子节点为null故递归至上一个节点2搜索左子节点5,继续搜索判断5节点无左右子节点,故递归返回至1节点
    3. 此时搜索判断1节点的左侧邻接节点3不为已搜索状态,故继续进行先右侧后左侧邻接节点搜索判断操作;
    4. 直至最后一个节点3不存在左右子节点,故递归至最初的1节点;判断结束,搜索结束

    有关于具体的树类结构的DFS算法分析见:https://www.cnblogs.com/njuptzheng/p/13329974.html

    代码实现:

    class Solution {
        public List<String> binaryTreePaths(TreeNode root) {
            List<String> paths = new ArrayList<String>();
            String path = "";
            sreachPaths(root,paths,path);
            return paths;
        }
    
        public void sreachPaths(TreeNode root, List<String> paths, String path) {
            
            if(root != null) {
                path += Integer.toString(root.val);
                if(root.left == null && root.right == null) {
                    paths.add(path);
                }else {
                    path += "->";
                    sreachPaths(root.left, paths, path);
                    sreachPaths(root.right, paths, path);
                }
    
            }
        }
    }
    

    执行结果

  • 相关阅读:
    CSS截取字符串
    mysql数据库中列转行
    Html页面操作json串
    mysql批量上传数据
    常见的表单元素选中
    关于Connection must be valid and open.
    百度editor调用【图片上传阿里云】
    百度apistore第三方登陆
    如何提高网页运行性能
    Html页面加回滚
  • 原文地址:https://www.cnblogs.com/njuptzheng/p/13330118.html
Copyright © 2020-2023  润新知