zoukankan      html  css  js  c++  java
  • LeetCode_Sum Root to Leaf Numbers

    一.题目

    Sum Root to Leaf Numbers

      Total Accepted: 47437 Total Submissions: 156443My Submissions

    Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number.

    An example is the root-to-leaf path 1->2->3 which represents the number 123.

    Find the total sum of all root-to-leaf numbers.

    For example,

        1
       / 
      2   3
    

    The root-to-leaf path 1->2 represents the number 12.
    The root-to-leaf path 1->3 represents the number 13.

    Return the sum = 12 + 13 = 25.

    Show Tags
    Have you met this question in a real interview?  
    Yes
     
    No

    Discuss
















    二.解题技巧

        这道题仅仅是一道二叉树的深度优先搜索的题目,在叶结点时将从根到叶结点的路径上的结点的值组成一个十进制的数。本质上还是一道深度优先搜索的题,仅仅是换了一种考察的形式。这道题不难,仅仅要细心点就能够bugfree的。


    三.实现代码

    #include <iostream>
    
    /**
    * Definition for a binary tree node.
    * struct TreeNode {
    *     int val;
    *     TreeNode *left;
    *     TreeNode *right;
    *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    * };
    */
    
    
    struct TreeNode
    {
        int val;
        TreeNode *left;
        TreeNode *right;
        TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    };
    
    class Solution
    {
        void sumNumbers(TreeNode*root, int &Result, int &TmpResult)
        {
            if (!root)
            {
                return;
            }
    
            // update the TmpResult
            TmpResult = TmpResult * 10 + root->val;
    
            if (!root->left && !root->right)
            {
                Result += TmpResult;
            }
    
            if (root->left)
            {
                sumNumbers(root->left, Result, TmpResult);
            }
    
            if (root->right)
            {
                sumNumbers(root->right, Result, TmpResult);
            }
    
            // restore the TmpResult;
            TmpResult = (TmpResult - root->val) / 10;
        }
    
    public:
        int sumNumbers(TreeNode* root)
        {
            int Result = 0;
            int TmpResult = 0;
    
            sumNumbers(root, Result, TmpResult);
    
            return Result;
        }
    };
    



    四.体会

        这道题是一道二叉树深度优先搜索的变形题目,考察的还是二叉树的递归遍历。仅仅是换了一种考察方式而已,并没有多大新意。




    版权全部。欢迎转载。转载请注明出处。谢谢微笑





  • 相关阅读:
    Delphi 与 DirectX 之 DelphiX(28): TDIB.Emboss;
    Delphi 与 DirectX 之 DelphiX(29): TDIB.AddMonoNoise();
    Delphi 与 DirectX 之 DelphiX(33): TDIB.SmoothRotateWrap();
    如何用w.bloggar从桌面发表文章
    可以插入图片了
    在首页可以查看阅读次数了
    .Text的MainFeed.aspx生成RSS的问题
    首页文章显示说明
    欢迎光临博客园
    如果想学习.Net Remoting,请看看MSDN上的一篇文章
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6800481.html
Copyright © 2011-2022 走看看