当前位置: 首页 > news >正文

代码随想录 404.左叶子之和

注意:左叶子不是二叉树左侧节点,不能直接层序遍历。

1.什么是左叶子:节点A的左孩子不为空,且左孩子的左右孩子都为空(说明是叶子节点),那么A节点的左孩子为左叶子节点。

2.左叶子之和举例:

(1)0,这棵树无左叶子。

(2)左叶子之和为6+15=21。

3.判断当前节点是否为左叶子:需要借助该节点的父节点:如果该节点的左节点不为空,该节点的左节点的左节点为空,该节点的左节点的右节点为空,则找到了一个左叶子。判断代码如下:

if (root.left != null && root.left.left == null && root.left.right == null){
//左叶子节点处理逻辑
}

方法一:后序遍历(左右中)递归,因为要通过递归函数的返回值累加求取左叶子数值之和。

1.确定递归函数的参数和返回值:

(1)参数:树的根节点。

(2)返回值:返回数值之和,类型为int。

int sumOfLeftLeaves(TreeNode root) 

2.确定终止条件:

(1)如果遍历到空节点,那么左叶子值一定为0;

(2)如果遍历到叶子节点,那么其左叶子也一定为0(不写不影响结果);

if (root == null) return 0;

3.确定单层递归的逻辑:当遇到左叶子节点的时候,记录数值,然后通过递归求取左子树左叶子之和和右子树左叶子之和,相加便是整个树的左叶子之和。

        int leftValue = sumOfLeftLeaves(root.left);    // 左int rightValue = sumOfLeftLeaves(root.right);  // 右int midValue = 0;if (root.left != null && root.left.left == null && root.left.right == null) { midValue = root.left.val;}int sum = midValue + leftValue + rightValue;  // 中return sum;

附代码:

class Solution {public int sumOfLeftLeaves(TreeNode root) {if(root == null){return 0;}int leftValue = sumOfLeftLeaves(root.left);int rightValue = sumOfLeftLeaves(root.right);int midValue = 0;if(root.left != null &&root.left.left == null &&root.left.right == null){midValue = root.left.val;}int sum = midValue + leftValue + rightValue;return sum;}
}

方法二:层序遍历迭代法统计左叶子节点的数量。

附代码:

class Solution {public int sumOfLeftLeaves(TreeNode root) {LinkedList<TreeNode> queue = new LinkedList<>();if(root == null){return 0;}queue.add(root);int sum = 0;while(queue.size()>0){int size = queue.size();for(int i = 0;i<size;i++){TreeNode t = queue.remove();if(t.left != null){queue.add(t.left);if(t.left.left == null && t.left.right == null){sum += t.left.val;}}if(t.right != null){queue.add(t.right);}}}return sum;}
}

http://www.dtcms.com/a/503429.html

相关文章:

  • 《3D可交互道具开发痛点解决:轻量化建模与解耦式逻辑实践》
  • 中铁雄安建设有限公司网站简述商务网站建设的步骤
  • 《3D开放世界地形开发:动态LOD与智能融合的轻量化实战路径》
  • 兽装定制网站wordpress商店安装
  • Redis(70)分布式锁的超时机制如何实现?
  • 自学网站免费晋中seo排名
  • WPF 联合 Web 开发调试流程梳理(基于 Microsoft.Web.WebView2)
  • 最簡實時性操作系統之任務鏈表
  • LeetCode:886. 可能的二分法
  • 【Linux】应用层协议http
  • cms网站后台上传图片提示图片类型错误但是类型是正确的服装网站建设效果
  • C程序中的数组与指针共生关系
  • 网站的建立步骤网站ip地址大全
  • 每日Reddit AI信息汇总 10.19
  • k8s(九)安全机制
  • 中国建设银行陕西分行官方网站微网站建设使用程序
  • 福州网站优化手机网站设计案例
  • Orleans 序列化、Actor Placement 和 Actor 调用详细分析
  • Java Object类及包装类
  • 《算法通关指南---C++编程篇(4)》
  • VScode 入门(设置篇)
  • 【第十八周】机器学习笔记07
  • 机械行业做网站wordpress 唯艾迪
  • TVM | 基本概念
  • 建设网站免费模板下载中国旅游网站模板
  • UVa 1471 Defense Lines
  • 【题解】洛谷 P11673 [USACO25JAN] Median Heap G [树形 dp]
  • 气球游戏(DP,分治)
  • MySQL同步连接池与TrinityCore的对比学习(六)
  • UserWarning: No file found at “C:\Faces\image_0032.jpg“AssertionError