LeetCode之“树”:Sum Root to Leaf Numbers

  题目链接

  题目要求:

  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.

  这道题利用深度优先搜索即可,具体程序(4ms)如下:

 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     int sumNumbers(TreeNode* root) {
13         int totalSum = 0;
14         sumNumbersSub(root, 0, totalSum);
15         return totalSum;
16     }
17     
18     void sumNumbersSub(TreeNode *tree, int sum, int &totalSum)
19     {
20         if(!tree)
21             return;
22         
23         sum = sum * 10 + tree->val;
24         if(!tree->left && !tree->right)
25         {
26             totalSum += sum;
27             return;
28         }
29         
30         sumNumbersSub(tree->left, sum, totalSum);
31         sumNumbersSub(tree->right, sum, totalSum);
32     }
33     
34 };

 

posted @ 2015-07-08 20:44  峰子_仰望阳光  阅读(181)  评论(0编辑  收藏  举报