LeetCode 求所有根到叶数的总和。
原题 如下
Given a binary tree containing digits from0-9only, each root-to-leaf path could represent a number.
An example is the root-to-leaf path1->2->3which represents the number123.
Find the total sum of all root-to-leaf numbers.
For example,
1/ \2 3
The root-to-leaf path1->2represents the number12.
The root-to-leaf path1->3represents the number13.
Return the sum = 12 + 13 =25.
思路:既然是找到所有叶节点,那就在找到叶节点的过程当中,更改其左右节点的值,如,上面例子中可将1 的左节点变为12,1的右节点变为13,如此递归,叶节点保持的就是从根节点到本身的路径值,当然坏处是,该变了原树值,不过可以将原树复制一遍即可,好处节点的值突破了原本只有0到9的限制,变成任意一个数都行,话不多说实现如下
package com.ACM;import java.util.ArrayList; import java.util.concurrent.locks.ReentrantLock;class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) {val = x;} }public class Solution {ArrayList<Integer> leafList = new ArrayList<Integer>();//用来保持叶子节点的最终值public static void main(String[] args) {}public int sumNumbers(TreeNode root) {int sum = 0;changeNodeValue(root);for (Integer leafValue : leafList) { sum += leafValue;}return sum;}public void changeNodeValue(TreeNode root) {if (root == null || (root.left == null && root.right == null)) {if (root != null) {leafList.add(root.val); //进入到这里说明是叶子节点,将其加入}return;}if (root.right != null) {root.right.val = Integer.parseInt(root.val + "" + root.right.val);changeNodeValue(root.right); //递归继续改变右子树的节点值}if (root.left != null) {root.left.val = Integer.parseInt(root.val + "" + root.left.val);changeNodeValue(root.left);//递归继续改变左子树的节点值}}}
LeetCode 求所有根到叶数的总和。相关推荐
- 求二叉树根节点到指定节点的路径
算法 求二叉树根节点到指定节点的路径 @author:Jingdai @date:2020.11.05 题目描述 给你一个棵二叉树,再给你一个指定的节点,求根节点到指定节点的路径. 如图,比如让你求到 ...
- matlab 求附近的根,求近似根的算法-matlab实现 | 学步园
在数值计算中,求一个根的近似很重要,因为在因为在用牛顿迭代等其他方法的时候,往往要找一个初始点,初始点的选取应在根的附近.另外,只有知道了近似根,才能有整体转化为局部.刚刚学数值计算方法,认识有限,大 ...
- C++求一个整数的各位数字总和(附完整源码)
C++求一个整数的各位数字总和算法 C++求一个整数的各位数字总和算法完整源码(定义,实现,main函数测试) C++求一个整数的各位数字总和算法完整源码(定义,实现,main函数测试) int su ...
- C语言实现牛顿-拉夫逊newton raphson求近似根roots(附完整源码)
实现牛顿-拉夫逊newton raphson求近似根 实现以下几个相关的接口 实现牛顿-拉夫逊newton raphson求近似根的完整源码(定义,实现,main函数测试) 实现以下几个相关的接口 d ...
- C语言durand kerner算法求近似根roots(附完整源码)
实现durand kerner算法求近似根roots 实现以下几个相关的个接口 durand kerner算法求近似根roots的完整源码(定义,实现,main函数测试) 实现以下几个相关的个接口 l ...
- matlab求系统根轨迹代码_要想正确画出根轨迹,先搞清楚这8大法则再说!
话说宝刀君这几年给学弟学妹们辅导自控时,学弟学妹们面对根轨迹,经常是一脸懵逼. 常常是拿到题后,零极点都标出来了,法则也写出来了,但就是根轨迹画不出来. 有时好不容易画出来了,返回去和法则一对照,忍不 ...
- 求出数组中元素的总和_数组中所有元素的总和可被给定数K整除
求出数组中元素的总和 This program will help to find out the sum of elements in an array which is divisible by ...
- 求二叉树上结点的路径c语言版,求二叉树根到给定节点的路径设计报告.doc
求二叉树根到给定节点的路径设计报告 题目: 求二叉树根到给定节点的路径 摘要:本程序设计题要求出二叉树的根节点到给定节点的路径,我们利用二叉树的双亲存储表示法建立二叉树,然后在树的叶子节点中找到给定的 ...
- 【LeetCode】【HOT】39. 组合总和(回溯)
[LeetCode][HOT]39. 组合总和 文章目录 [LeetCode][HOT]39. 组合总和 package hot;import java.util.ArrayList; import ...
最新文章
- 电子漫画 - 轻轻松松
- npm全局安装失效修复
- c++ c6386 缓冲区 溢出_Office 远程溢出漏洞测试与分析
- ZooKeeper实战(三):ZooKeeper实现分布式配置中心、分布式锁、Reactive响应式模型
- linux centos升级php_CentOS使用yum升级php到最新版本
- ALBERT、XLNet,NLP技术发展太快,如何才能跟得上节奏?
- mysql 5.6 密码_Mysql5.6 忘记root密码的解决办法
- solidity return data和revert/require的reason string的获得
- linux查看某个时间段的日志
- ASIFormDataRequest实现上传图片
- 设计模式小例子理解封装、继承、多态
- si4463的寄存器使用说明
- Ubuntu20.04安装gamit10.7
- 2021SC@SDUSC Zxing开源代码(十四)Aztec二维码(三)
- COIL:结合稠密检索和词汇匹配的更高效检索模型
- canvas教程6-绘制圆弧
- .7z.001,.7z.002这样的文件如何解压
- 联想为什么不卖X系列服务器,IBM欲向联想出售x86服务器业务,涉及System x产品线...
- 智慧营区解决方案-最新全套文件
- matlab确定分段函数的间断点,凡分段函数必有间断点