Em segundo lugar, as ideias de resolução de problemas
Preorder árvore de busca binária é crescente seqüência
Primeiro, podemos pré-encomenda árvore de busca binária, depósito digitaisvector
A nova árvore é vectordo fim do começo, desde o final do elemento atual para elementosum
Trans inorder travessia da árvore de busca binária é uma seqüência descendente
Anti inorder travessia binário pesquisa árvore, a corrente igual ao elemento atualsum
Em terceiro lugar, o Código de resolução de problemas
solução preorder
classSolution{public:
TreeNode*bstToGst(TreeNode* root){if(!root)return root;
vector<int> vec;
stack<TreeNode*>s;auto p = root;while(!s.empty()|| p){while(p){
s.push(p);
p = p->left;}if(!s.empty()){
p = s.top();
s.pop();
vec.push_back(p->val);
p = p->right;}}int sum =0;for(auto i = vec.rbegin(); i != vec.rend(); i++){
sum +=*i;*i = sum;}int counter =0;
p = root;while(!s.empty()|| p){while(p){
s.push(p);
p = p->left;}if(!s.empty()){
p = s.top();
s.pop();//vec.push_back(p->val);
p->val = vec[counter++];
p = p->right;}}return root;}};
Solução Anti pré-venda
classSolution{public:int sum =0;public:
TreeNode*bstToGst(TreeNode* root){if(root){
root->right =bstToGst(root->right);
sum += root->val;
root->val = sum;
root->left =bstToGst(root->left);}return root;}};