【leetcode】129. Sum Root to Leaf Numbers

来源:互联网 发布:软件开发经理 编辑:程序博客网 时间:2024/05/17 23:08

最重要的关键就是当只有单亲孩子的时候,不能重复计数。

所以需要对当前结点是否有双亲孩子,单亲孩子,还有叶节点的分别考虑。主要问题在于重复计数。

/** *  @author         johnsondu *  @time           20:51 8th Oct 2015 *  @type           binary tree traverse *  @url            https://leetcode.com/problems/sum-root-to-leaf-numbers/ *  @status         Accepted *//** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    void dfs(int cnt, TreeNode* node, int &ans) {        cnt = cnt * 10 + node->val;        if(node->left && node->right) {            dfs(cnt, node->left, ans);            dfs(cnt, node->right, ans);        }        else if(node->left) dfs(cnt, node->left, ans);        else if(node->right) dfs(cnt, node->right, ans);        else ans += cnt;    }    int sumNumbers(TreeNode* root) {        int ans = 0;        if(root == NULL) return ans;        int cnt = root->val;        if(root->left && root->right) {            dfs(cnt, root->left, ans);            dfs(cnt, root->right, ans);        }        else if(root->left) dfs(cnt, root->left, ans);        else if(root->right) dfs(cnt, root->right, ans);        else ans += cnt;        return ans;    }};


0 0
原创粉丝点击