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

LeetCode-129-求根节点到叶节点的数之和

时间:2023-04-01 21:39:03 Java

求根节点到叶节点的数之和题目描述:给你一棵二叉树的根节点root,和树中的每个节点都存储一个介于0和9之间的数字。从根节点到叶子节点的每条路径代表一个数字:例如,从根节点到叶子节点的路径1->2->3代表数字123。计算从根节点到叶节点生成的所有数字的总和。叶节点是没有子节点的节点。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。解法一:递归法用递归法来解决这个问题。递归过程如下:首先,如果当前节点为null,则说明它是一棵空树,直接返回;如果当前节点不为nll,则将当前节点的值添加到path中;然后判断当前节点没有左右子节点,说明是叶子节点。将当前路径值添加到结果中并返回;如果当前节点的左节点不为空,则递归处理左节点;如果当前节点的右节点不为空,则递归处理右节点。最后返回的结果就是结果值。导入com.kaesar.leetcode.TreeNode;publicclassLeetCode_129{//最后的累加值privatestaticintresult=0;publicstaticintsumNumbers(TreeNoderoot){sumNumbers(root,"");返回结果;}/***递归方法**@paramroot*@parampath*/privatestaticvoidsumNumbers(TreeNoderoot,Stringpath){//如果当前节点为null,说明是空树,如果直接返回(root==null){返回;}//将当前节点的值添加到路径中path+=root.val;//如果当前节点没有左右子节点,说明是叶子节点,将当前路径值加到结果中,然后返回if(root.left==null&&root.right==null){结果+=Integer.valueOf(路径);返回;}if(root.left!=null){//当当前节点的左节点不为空时,递归处理左节点sumNumbers(root.left,path);}if(root.right!=null){//当当前节点的右节点不为空时,递归处理右节点sumNumbers(root.right,path);}}publicstaticvoidmain(String[]args){TreeNoderoot=newTreeNode(4);root.left=newTreeNode(9);root.right=newTreeNode(0);root.left.left=newTreeNode(5);root.left.right=newTreeNode(1);//测试用例,预期输出:1026System.out.println(sumNumbers(root));}}【每日留言】人生就像一场赌博,不可能什么都赢,只要筹码在你手中,总会有希望