LeetCode1022. 从根到叶的二进制数之和

题目

class Solution {
public:
    int ans = 0;
    int sumRootToLeaf(TreeNode* root) {
        dfs(root,0);
        return ans;
    }
    void dfs(TreeNode*root,int cur){
        if(root== NULL) return ;
        if(root->left == NULL && root->right == NULL){
            cur += root->val;
            ans += cur;
        } 
        dfs(root->left,(cur+root->val)*2);
        dfs(root->right,(cur+root->val)*2);
    }
        
};

本题值得二三刷,开始思路是混乱的,想要保存每一条到叶子结点的路径,然后结合将二进制转换成十进制

就算后来想到用先序遍历递归来做,对于递归中保存值处理的不好。

若递归中需要记录之前值,可以通过将该值的信息作为参数来进行传递。

posted @ 2021-01-14 18:19  Uitachi  阅读(51)  评论(0编辑  收藏  举报