原题 如下

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 求所有根到叶数的总和。相关推荐

  1. 求二叉树根节点到指定节点的路径

    算法 求二叉树根节点到指定节点的路径 @author:Jingdai @date:2020.11.05 题目描述 给你一个棵二叉树,再给你一个指定的节点,求根节点到指定节点的路径. 如图,比如让你求到 ...

  2. matlab 求附近的根,求近似根的算法-matlab实现 | 学步园

    在数值计算中,求一个根的近似很重要,因为在因为在用牛顿迭代等其他方法的时候,往往要找一个初始点,初始点的选取应在根的附近.另外,只有知道了近似根,才能有整体转化为局部.刚刚学数值计算方法,认识有限,大 ...

  3. C++求一个整数的各位数字总和(附完整源码)

    C++求一个整数的各位数字总和算法 C++求一个整数的各位数字总和算法完整源码(定义,实现,main函数测试) C++求一个整数的各位数字总和算法完整源码(定义,实现,main函数测试) int su ...

  4. C语言实现牛顿-拉夫逊newton raphson求近似根roots(附完整源码)

    实现牛顿-拉夫逊newton raphson求近似根 实现以下几个相关的接口 实现牛顿-拉夫逊newton raphson求近似根的完整源码(定义,实现,main函数测试) 实现以下几个相关的接口 d ...

  5. C语言durand kerner算法求近似根roots(附完整源码)

    实现durand kerner算法求近似根roots 实现以下几个相关的个接口 durand kerner算法求近似根roots的完整源码(定义,实现,main函数测试) 实现以下几个相关的个接口 l ...

  6. matlab求系统根轨迹代码_要想正确画出根轨迹,先搞清楚这8大法则再说!

    话说宝刀君这几年给学弟学妹们辅导自控时,学弟学妹们面对根轨迹,经常是一脸懵逼. 常常是拿到题后,零极点都标出来了,法则也写出来了,但就是根轨迹画不出来. 有时好不容易画出来了,返回去和法则一对照,忍不 ...

  7. 求出数组中元素的总和_数组中所有元素的总和可被给定数K整除

    求出数组中元素的总和 This program will help to find out the sum of elements in an array which is divisible by ...

  8. 求二叉树上结点的路径c语言版,求二叉树根到给定节点的路径设计报告.doc

    求二叉树根到给定节点的路径设计报告 题目: 求二叉树根到给定节点的路径 摘要:本程序设计题要求出二叉树的根节点到给定节点的路径,我们利用二叉树的双亲存储表示法建立二叉树,然后在树的叶子节点中找到给定的 ...

  9. 【LeetCode】【HOT】39. 组合总和(回溯)

    [LeetCode][HOT]39. 组合总和 文章目录 [LeetCode][HOT]39. 组合总和 package hot;import java.util.ArrayList; import ...

最新文章

  1. 电子漫画 - 轻轻松松
  2. npm全局安装失效修复
  3. c++ c6386 缓冲区 溢出_Office 远程溢出漏洞测试与分析
  4. ZooKeeper实战(三):ZooKeeper实现分布式配置中心、分布式锁、Reactive响应式模型
  5. linux centos升级php_CentOS使用yum升级php到最新版本
  6. ALBERT、XLNet,NLP技术发展太快,如何才能跟得上节奏?
  7. mysql 5.6 密码_Mysql5.6 忘记root密码的解决办法
  8. solidity return data和revert/require的reason string的获得
  9. linux查看某个时间段的日志
  10. ASIFormDataRequest实现上传图片
  11. 设计模式小例子理解封装、继承、多态
  12. si4463的寄存器使用说明
  13. Ubuntu20.04安装gamit10.7
  14. 2021SC@SDUSC Zxing开源代码(十四)Aztec二维码(三)
  15. COIL:结合稠密检索和词汇匹配的更高效检索模型
  16. canvas教程6-绘制圆弧
  17. .7z.001,.7z.002这样的文件如何解压
  18. 联想为什么不卖X系列服务器,IBM欲向联想出售x86服务器业务,涉及System x产品线...
  19. 智慧营区解决方案-最新全套文件
  20. matlab确定分段函数的间断点,凡分段函数必有间断点

热门文章

  1. 【git】fatal: in unpopulated submodule
  2. 获取Stream流的几种方式
  3. java寻找数组中第k大的数
  4. 蛰伏——背后的黑暗 2012-02-05 13:23:36 蛰伏——背后的黑暗 每
  5. Java8 日期时间的操作技巧
  6. AUTOSAR从入门到精通-【应用篇】基于无线网络的汽车 ECU 数据交互模块研发
  7. 海惠生活,海量优惠充斥你的生活
  8. 实验4--ospf(MGRE的星型结构和全连结构)
  9. 23中设计模式之工厂模式
  10. 深入了解中国家庭服务机器人行业现况(深圳人工智能行业协会)