首页 > 编程语言 > 详细

力扣算法:把二叉搜索树转换为累加树

时间:2020-09-21 21:47:57      阅读:55      评论:0      收藏:0      [点我收藏+]

原题链接:https://leetcode-cn.com/problems/convert-bst-to-greater-tree

 

给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。

技术分享图片

 

思路:因为给定的树为 二叉搜索树,即中序遍历是从小到大排列的。这道题可以采用反向中序遍历,定一个值为反向中序遍历的和,每遍历一个就加上一个。

具体代码如下:

public TreeNode convertBST(TreeNode root) {
        List<Integer> result = new ArrayList<>();  //为了记录和,不能使用int  ,因为不是对象类型的,会丢失数据
        result.add(0);   //初始和为0
        TreeNode t=root;
        getNum(result, t);
        return root;
    }
    public void getNum(List<Integer> result,TreeNode root){
        if(root==null)
            return;
        getNum(result,root.right);
        int sum=result.get(0);
        result.remove(0);
        result.add(sum+root.val);
        root.val=sum+root.val;
        getNum(result,root.left);
    }

 

力扣算法:把二叉搜索树转换为累加树

原文:https://www.cnblogs.com/wys-373/p/13707292.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!