異なる値を持つノードを持つバイナリ探索木のルートノードが与えられたとき、各ノードの新しい値が元の木のnode.val以上の値の合計に等しくなるようにバイナリ木を修正します。
ノードの左サブツリーには、ノード・キーより小さいキーを持つノードだけが含まれます。ノードの右サブツリーには、ノード・キーより大きいキーを持つノードだけが含まれます。左サブツリーと右サブツリーもバイナリ探索木でなければなりません。
[4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]
[,,15,null,null,null,33,null,null,null,8]
class Solution{
public:
int val = 0;
TreeNode* bstToGst(TreeNode* root) {
if (root) {
bstToGst(root->right);
val += root->val;
root->val = val;
bstToGst(root->left);
}
return root;
}
};