leetcode1038. 把二叉搜索树转换为累加树

想了一下之后觉得这是一个右中左的遍历,设置一个全局变量保存当前已累加的值,去更新如此遍历所经过的每个节点。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
int t=0;
void reverse(TreeNode* n){
if(n==NULL){
return;
}
reverse(n->right);
t+=n->val;
n->val=t;
reverse(n->left);
}
TreeNode* bstToGst(TreeNode* root) {
reverse(root);
return root;
}
};

浙公网安备 33010602011771号