网络异常,图片无法展示
|
给你一棵二叉树的根节点 root
,请你返回 层数最深的叶子节点的和 。
示例 1:
网络异常,图片无法展示
|
输入: root = [1,2,3,4,5,null,6,7,null,null,null,null,8] 输出: 15 复制代码
示例 2:
输入: root = [6,7,8,2,7,1,3,9,null,1,4,null,null,null,5] 输出: 19 复制代码
提示:
- 树中节点数目在范围
[1, 104]
之间。 1 <= Node.val <= 100
解题思路
本题比较简单,我们只需要在遍历二叉树的时候记录一下当前的深度,将节点值根据深度放到节点值数组中的对应子数组中,这样当我们遍历完二叉树时,节点值数组的最后一个子数组中就保存了层数最深的叶子节点的值。
将该子数组中的值相加,就得到了层数最深的叶子节点的和。
代码实现
var deepestLeavesSum = function(root) { // 创建节点值数组 const arr = []; // 前序遍历二叉树 function preorder(node,deep){ if(node === null) return; // 如果当前深度对应子数组未创建,创建子数组 if(arr[deep] === undefined) arr[deep] = [] // 将当前节点值插入其深度对应子数组中 arr[deep].push(node.val); // 递归处理左子树 preorder(node.left,deep+1) // 递归处理右子树 preorder(node.right,deep+1) } // 前序遍历二叉树 preorder(root,0); // 获取最后一个子数组 const last = arr[arr.length-1] // 初始化和值为 0 let sum = 0; // 遍历保存层数最深叶子节点值的数组,累加和值 for(let i = 0;i<last.length;i++){ sum += last[i] } // 返回结果 return sum; }; 复制代码
至此我们就完成了 leetcode-1302-层数最深叶子节点的和
如有任何问题或建议,欢迎留言讨论!