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;
        }
    };
    



    四.体会

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




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





  • 相关阅读:
    C# 注册Dll文件
    WPF强制设置TextBox文本框的焦点
    WPF中MVVM模式下控件自有的事件绑定
    第2章 数字之魅——数字中的技巧2.8
    具体数学斯特林数-----致敬Kunth
    一个数的约数(个数。约数和)
    hdu 1796 How many integers can you find 容斥定理
    读贾志鹏线性筛有感 (莫比乌斯函数的应用)
    欧拉函数小结
    莫比乌斯函数
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/6800481.html
Copyright © 2011-2022 走看看