zoukankan      html  css  js  c++  java
  • LintCode2016年算法比赛----二叉树的所有路径

    二叉树的所有路径

    题目描述

    给定一棵二叉树,找从根节点到叶子节点的所有路径

    样例

    给出下面这课二叉树:

       1
     /   
    2     3
     
      5
    

    所有根到叶子的路径为:

    [
      	"1->2->5",
    	"1->3"
    ]
    
    算法分析:
    递归地处理二叉树,先将子树的所有路径求出,然后把根节点的数据贴到子路径的所有结果上
    

    Java算法实现:

    /**
     * Definition of TreeNode:
     * public class TreeNode {
     *     public int val;
     *     public TreeNode left, right;
     *     public TreeNode(int val) {
     *         this.val = val;
     *         this.left = this.right = null;
     *     }
     * }
     */
    public class Solution {
        /**
         * @param root the root of the binary tree
         * @return all root-to-leaf paths
         */
        public List<String> binaryTreePaths(TreeNode root) {
            // Write your code here
            List<String>list=new ArrayList<>();
    		if(root!=null){
    			List<String>left=binaryTreePaths(root.left);
    			List<String>right=binaryTreePaths(root.right);
    			String current=String.valueOf(root.val);
    			if(left.size()==0&&right.size()==0){
    				list.add(current);
    			}
    			else{
    				if(left.size()!=0){
    					for(String leftStr:left){
    						list.add(current+"->"+leftStr);
    					}
    				}
    				if(right.size()!=0){
    					for(String rightStr:right){
    						list.add(current+"->"+rightStr);
    					}
    				}
    			}
    		}
    		return list;
        }
        
    }
  • 相关阅读:
    初涉线性基
    Codechef December Challenge 2018 Division 2
    【贪心】bzoj1592: [Usaco2008 Feb]Making the Grade 路面修整
    请求库之requests
    爬虫基本原理
    Flask-SQLAlchemy
    虚拟环境
    自定义验证规则以及中间件简单介绍
    Form组件归类
    分页与中间件
  • 原文地址:https://www.cnblogs.com/dongling/p/5795852.html
Copyright © 2011-2022 走看看