当前位置: 首页 > 后端技术 > Java

LeetCode-257-AllPathsofaBinaryTree

时间:2023-04-02 01:14:38 Java

AllPathsofaBinaryTree题目描述:给定一棵二叉树,返回从根节点到叶节点的所有路径。解释:叶节点是指没有子节点的节点。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:递归的方法首先,如果root为null,直接返回一个空的List。main方法的处理过程就是调用递归方法,初始路径path为根节点值,然后判断递归方法的参数,根据是否有左右子树多次调用该方法。递归方法有两个参数,一个是当前节点的根,一个是当前路径path。递归过程如下:如果根为空,则将当前路径添加到结果中。如果root的左右子树都为空,则将path添加到当前节点的值中,再添加到result中返回。如果root的左子树为空,则递归调用该方法。参数为root的右节点,path为path添加当前节点的值;如果root的右子树为空,则递归调用该方法,参数为root的左节点,path为path加上当前节点的值;如果根的左右子树不为空,则调用两次递归方法,参数为根的左右节点,路径为路径加上当前节点的值。importjava.util.ArrayList;importjava.util.List;publicclassLeetCode_257{privatestaticListresult=newArrayList<>();publicstaticListbinaryTreePaths(TreeNoderoot){if(root==null){returnnewArrayList<>();}if(root.left==null){binaryTreePaths(root.right,root.val+"");}elseif(root.right==null){binaryTreePaths(root.left,root.val+"");}else{binaryTreePaths(root.right,root.val+"");binaryTreePaths(root.left,root.val+"");}返回结果;}privatestaticvoidbinaryTreePaths(TreeNoderoot,Stringpath){if(root==null){result.add(path);返回;}if(root.left==null&&root.right==null){path+="->"+root.val;结果.添加(路径);}else{路径+="->"+root.val;if(root.left==null){binaryTreePaths(root.right,path);}elseif(root.right==null){binaryTreePaths(root.left,path);}else{binaryTreePaths(root.right,path);binaryTreePaths(root.left,path);}}}publicstaticvoidmain(String[]args){TreeNoderoot=newTreeNode(1);root.left=newTreeNode(2);root.right=newTreeNode(3);root.left.right=newTreeNode(5);for(Stringpath:binaryTreePaths(root)){System.out.println(path);}}}【每日消息】]太阳没有辜负过我们,所以我们绝不能辜负太阳