这道题处理二进制转换的方式有点意思,记录一下
void preOrder(TreeNode* root, vector<int>& v,int& sum)
{
//回溯
if(root==nullptr) return;
v.push_back(root->val);
preOrder(root->left,v,sum);
preOrder(root->right,v,sum);
//正常处理方式
if(!root->left&&!root->right)
{
int value=0,len=v.size()-1;
for(int j=0;j<=len;++j)
{
value+=v[j]*pow(2,len-j);
}
sum+=value;
}
/*
//位运算
if(!root->left&&!root->right)
{
int value=0,len=v.size()-1;
for(int j=0;j<=len;++j)
{
cout<<"value:"<<value<<endl;
value+=v[j]<<(len-j);
}
sum+=value;
}*/
v.pop_back();
}
void preOrder(TreeNode* root, vector<int>& v,int& sum)
{
if(root==nullptr) return;
v.push_back(root->val);
preOrder(root->left,v,sum);
preOrder(root->right,v,sum);
v.pop_back();
}