コード例 #1
0
 void sumNumber(TreeNode *root, int cur, int &sum)
 {
     if(!root) return;
     cur = cur * 10 + root->val;
     if(!root->left && !root->right)
     {
         sum += cur;
         return;
     }
     sumNumber(root->left, cur, sum);
     sumNumber(root->right, cur, sum);
 }
コード例 #2
0
 int calculate(string s) {
     vector<char> op;
     vector<int> num;
     for (int i = 0; i < s.size(); i++) {
         char ch = s[i];
         if (ch == ' ')
             continue;
         if (!isdigit(ch)) {
             op.push_back(s[i]);
             continue;
         } else {
             num.push_back(sumNumber(i, s));
             if (!op.empty() && (op.back() == '*' || op.back() == '/')) {
                 int b = num.back(); num.pop_back();
                 int a = num.back(); num.pop_back();
                 num.push_back(calcWithOp(a, b, op.back()));
                 op.pop_back(); 
             }
         }
     }
     int ans = num[0];
     for (int i = 0; i < op.size(); i++)
         ans = calcWithOp(ans, num[i + 1], op[i]);
     return ans;
 }
コード例 #3
0
 int sumNumbers(TreeNode* root) 
 {
     int sum = 0;
     sumNumber(root, 0, sum);
     return sum;
 }