LeetCode 之 Sum Root to Leaf Numbers

来源:互联网 发布:淘宝售后客服怎么应聘 编辑:程序博客网 时间:2024/04/30 21:00

原题:

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.

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.

解题思路:

在每个节点将父节点传下来的的值乘以10加上自己的val,可以获得一个值,然后把这个值传到左右子节点上,最后如果处理到叶子节点的时候,可以得到一条路径的值,然后把所有的路径的和都加在一个int里就可以,要加在一个int,就需要在传参的时候传地址。如图:




代码如下( 20 ms):

class Solution {public:    int sumNumbers(TreeNode *root) {        // IMPORTANT: Please reset any member data you declared, as        // the same Solution instance will be reused for each test case.        if(root==NULL) return 0;        int result = 0;        DFS(root , 0 , result);             return result;       }            void DFS(TreeNode *root , int num , int &result ){                        //由于需要保存层的信息,声明一个vector保存两个int        //第一个为level信息,叶子为1层,别的都保存10^层数,第二层保存10,第三层保存100        int level = num*10+root->val;        if(root->left==NULL && root->right==NULL){            //叶子节点            result+=level;            return;        }                if(root->left){            DFS(root->left , level , result);        }        if(root->right){            DFS(root->right , level , result);        }    }};


原创粉丝点击