leetcode 538. Convert BST to Greater Tree

淺唱寂寞╮ 提交于 2020-03-07 05:25:52

两遍遍历。第一遍是为了算出整体的和,无论什么遍历顺序都可以。第二遍必须是中序遍历,因为是为了算出比当前节点小的和。

class Solution {
    int sum = 0;
    int sum1 = 0;
    public TreeNode convertBST(TreeNode root) {
        plus(root);
        inorder(root);
        return root;
    }
    public void plus(TreeNode root){
        if(root==null) return;
        plus(root.left);
        sum += root.val;
        plus(root.right);
        
    }
    public void inorder(TreeNode root){
        if(root==null) return;
        inorder(root.left);
        sum1 +=root.val;
        root.val = sum-sum1+root.val;
        inorder(root.right);
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!