#include <iostream> #include<bits/stdc++.h> using namespace std; class Solution { public: /** * 计算字符串形式的整数的差 * @param num1 string字符串 被减数(字符串形式) * @param num2 string字符串 减数(字符串形式) * @return string字符串 */ string sub_strings(string num1, string num2) { vector<int>result; while(num2.size()!=num1.size()) { num2=num2.insert(0,1,'0'); } for(int i=num1.size()-1;i>=0;i--) { if(num1[i]>=num2[i]) result.push_back(num1[i]-num2[i]); else { result.push_back(num1[i]-num2[i]+10); if(num1[i-1]==0)//=0 { num1[i-1]=9; int temp=i-2; while(num1[temp]==0) { num1[temp]=9; temp--; } num1[temp]--; } else //!=0 { num1[i-1]--; } } } string r=""; for(int i=result.size()-1;i>=0;i--) r.push_back(result[i]+'0'); return r; } };
2.左右子树之差
//枓與 /** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution { public: /** * 计算二叉树左叶子之和 减去 右叶子之和 的差值 * @param node TreeNode类 * @return int整型 */ int lv=0; int lr=0; void Preorder(TreeNode*t) { if(t) { if(t->left && t->left->left==NULL&& t->left->right==NULL) lv=lv+t->left->val; if(t->right && t->right->left==NULL&& t->right->right==NULL) lr=lr+t->right->val; Preorder(t->left); Preorder(t->right); } } int subtraction_of_leaves(TreeNode* node) { Preorder(node); return lv-lr; } };
全部评论
(3) 回帖