左叶子之和 Posted on 2021-06-19 00:00:00 2021-06-26 00:00:00 by Author 摘要 给定一颗二叉树,你能计算给定二叉树得所有的左叶子之和吗?????? # 左叶子之和 1. 题目描述 - 给定一颗二叉树,计算给定二叉树得所有左叶子之和。 2. 示例描述 - 示例一 - 输入:  - 输出:3 - 解释:这颗二叉树,所有得左孩子之和为3,也就是最后一个节点 - 示例二 - 输入:  - 输出:16 - 解释:这颗二叉树所有左叶子节点之和为16,即{7,9}这三个节点 3. 解题思路 - 这道题目其实很简单,又是一道对二叉树遍历操作得变型而已,如果我们能够正确理解二叉树遍历得过程,其实实现起来不难。 - 本题让我们找二叉树得左孩子节点,并且这个节点为叶子节点,那么我们在遍历过程中只要满足这两个条件即可。这里我们用二叉树先序遍历递归得方式来写,首先如果一个节点存在,那么看这个节点是否存在左孩子,这是前提,如果该节点存在左孩子,那么看左孩子是否是叶子节点,如果左孩子节点满足以上两点要求,那么该节点就是我们要找的节点,最后把该节点的加入最终结果中,重复以上步骤,直到前序遍历完整棵二叉树,那么本道题也就解决了。具体代码如下。 4. 代码示例 ```java //定义一个全局结果变量 int result = 0; public int sumOfLeftLeaves(TreeNode root) { //前序遍历二叉树的一般写法 if (root != null) { // //定义一个全局结果变量,初始值为0 //再判断该节点是否是叶子节点 //如果是叶子节点,那么就把左叶子节点值加入到最终结果中 if (root.left != null && root.left.left == null && root.left.right == null) { result += root.left.val; } //前序遍历二叉树的一般写法 sumOfLeftLeaves(root.left); sumOfLeftLeaves(root.right); } //返回最后的结果 return result; } ```
{{ item.content }}
{{ child.content }}