leetcode404_左叶子之和
题目链接:https://leetcode-cn.com/problems/sum-of-left-leaves/
要读懂题目,题目要的是左叶子之和,是左叶子不是做节点!
最开始的写法:
class Solution {
public int sumOfLeftLeaves(TreeNode root) {
if(root == null) return 0;
int ans = 0;
if(root.left != null) {
if(root.left.left == null && root.left.right == null) ans += root.left.val;
ans += sumOfLeftLeaves(root.left);
}
if(root.right != null) {
ans += sumOfLeftLeaves(root.right);
}
return ans;
}
}
反思:但凡是树的递归,你必须要想清楚,到底是哪个序列的遍历?
这里是后序遍历(左右中),因为你需要计算出左右子树的左叶子的节点,然后和本树的左叶子相加,最后返回。
class Solution {
public int sumOfLeftLeaves(TreeNode root) {
if(root == null) return 0;
int ans = 0;
ans += sumOfLeftLeaves(root.left);
ans += sumOfLeftLeaves(root.right);
if(root.left != null && root.left.left == null && root.left.right == null) ans += root.left.val;
return ans;
}
}
其实可能前序遍历和后序遍历差不多吧,比如精简版的就用的是前序遍历:
class Solution {
public int sumOfLeftLeaves(TreeNode root) {
if(root == null) return 0;
int midValue = 0;
if(root.left != null && root.left.left == null && root.left.right == null) midValue += root.left.val;
return midValue + sumOfLeftLeaves(root.left) + sumOfLeftLeaves(root.right);
}
}
分类:
树
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】