zoukankan      html  css  js  c++  java
  • 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);
                }
    
            }
        }
    }
    

    执行结果

  • 相关阅读:
    ACM TJU 1556
    HDU 1890 Robotie Sort
    Android学习笔记
    HDU 2795
    HDU 1542
    HDU 1698
    POJ 2185
    学习笔记
    HDU 3336
    HDU 3746
  • 原文地址:https://www.cnblogs.com/njuptzheng/p/13330118.html
Copyright © 2011-2022 走看看