0
点赞
收藏
分享

微信扫一扫

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


文章目录

  • ​​1.题目​​
  • ​​2.代码​​

1.题目

  • 题目要求:​​538. 把二叉搜索树转换为累加树​​​,​​把二叉搜索树转换为累加树​​
  • 思路:中序遍历的变种
    二叉搜索树是一棵空树,或者是具有下列性质的二叉树:
    若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值;
    若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值;
    它的左、右子树也分别为二叉搜索树。
    由这样的性质我们可以发现,二叉搜索树的中序遍历是一个单调递增的有序序列。如果我们反序地中序遍历该二叉搜索树,即可得到一个单调递减的有序序列。

2.代码

struct TreeNode{
int val;
TreeNode* left;
TreeNode* right;
TreeNode():val(0),left(NULL),right(NULL) {}
TreeNode(int val):val(val),left(NULL),right(NULL) {}
TreeNode(int val,TreeNode* left,TreeNode* right) val(val),left(left),right(val) {}
};

class Solution {
public:
int sum=0;
TreeNode* convertBST(TreeNode* root) {
if (!root) return;
convertBST(root->right);
sum+=root->val;
root->val=sum;
convertBST(root->left);

return root;
}


举报

相关推荐

0 条评论