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

LeetCode-404-Sumofleftleaves

时间:2023-04-01 15:41:02 Java

Sumofleftleaves题目描述:Computethesumofallleftleavesofagivenbinarytree.例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:递归首先,如果根节点root为null或者只有一个节点,则表示没有叶子节点,直接返回0;否则,增加一个递归方法recursive,它有2个参数,分别是当前节点的左右子节点,flag是左右子节点的标识,递归过程如下:调用递归方法递归,参数为root的左右子节点,flag为对应的标识符;如果递归方法中的根为空,则返回;如果root没有左右子节点且标志被识别为左子节点,则将root的值添加到结果中;否则递归调用recursive,参数为root的左右子节点,flag为对应的标识。最后返回的结果是所有左叶节点的和。importcom.kaesar.leetcode.TreeNode;/***@Author:ck*@Date:2021/9/297:33下午*/publicclassLeetCode_404{/***叶子之和*/publicstaticintresult=0;publicstaticintsumOfLeftLeaves(TreeNoderoot){if(root==null||(root.left==null&&root.right==null)){返回0;}递归(root.left,真);递归(root.right,false);返回结果;}/***递归方法**@paramroot*@paramflagtrue表示是左子节点;false表示是右子节点*/publicstaticvoidrecursive(TreeNoderoot,booleanflag){if(root==null){返回;}if(root.left==null&&root.right==null&&flag){结果+=root.val;}递归(root.left,真);递归(root.right,false);}publicstaticvoidmain(String[]args){TreeNoderoot=newTreeNode(3);root.left=newTreeNode(9);root.right=newTreeNode(20);root.right.left=newTreeNode(15);root.right.right=newTreeNode(7);//预期返回值:24System.out.println(sumOfLeftLeaves(root));}}[每日留言]懒人等待机会,勤奋人创造机会