题目
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); } };
本题值得二三刷,开始思路是混乱的,想要保存每一条到叶子结点的路径,然后结合将二进制转换成十进制
就算后来想到用先序遍历递归来做,对于递归中保存值处理的不好。
若递归中需要记录之前值,可以通过将该值的信息作为参数来进行传递。