zoukankan      html  css  js  c++  java
  • LeedCode刷题:129.求根到叶子节点数字的之和

    给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。

    例如,从根到叶子节点路径 1->2->3 代表数字 123。

    计算从根到叶子节点生成的所有数字之和。

    解题思路:dfs深度优先遍历搜索,本质是搜索叶子结点,边搜索边更新tmp的值——不是叶子结点就将tmp*10+此点的val继续向下搜索,直至找到叶子结点,当前root节点的左右孩子为同时为空,即为叶子节点时,是dfs出口。就将此tmp加入sum当中,最终返回sum的值

    代码:

     1 /**
     2  * Definition for a binary tree node.
     3  * public class TreeNode {
     4  *     int val;
     5  *     TreeNode left;
     6  *     TreeNode right;
     7  *     TreeNode(int x) { val = x; }
     8  * }
     9  */
    10  /* 此题本质是寻找叶子结点,并将tmp加入sum中,最终搜索完全部的叶子结点,返回sum */
    11 class Solution {
    12     static int sum;
    13     public int sumNumbers(TreeNode root) {
    14         sum=0;
    15         dfs(root,0);//从根节点开始寻找,val初始为0
    16         return sum;
    17     }
    18     public static void dfs(TreeNode root,int val){
    19         if(root==null)return ;//节点为空,回溯
    20         int tmp=val*10+root.val;//存储暂时值,碰到叶子结点了,就将此值加入sum
    21         if(root.left==null&&root.right==null){//是叶子结点时才sum加和
    22             sum+=tmp;
    23         }
    24         dfs(root.left,tmp);//不是叶子结点则继续寻找至叶子结点
    25         dfs(root.right,tmp);
    26     }
    27 }
  • 相关阅读:
    C# bool? 逻辑运算
    C# yield return 用法与解析
    枚举器和迭代器
    C# 事件
    C# 索引器
    C# 实现单例模式的几种方法
    协变 和 逆变
    C# 结构体的特点
    装箱 和 拆箱
    继承之---对象用父类声明,用子类实例化
  • 原文地址:https://www.cnblogs.com/nilbook/p/13605341.html
Copyright © 2011-2022 走看看