• [LeetCode] 538. Convert BST to Greater Tree


    Given a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original BST is changed to the original key plus sum of all keys greater than the original key in BST.

    Example:

    Input: The root of a Binary Search Tree like this:
                  5
                /   
               2     13
    
    Output: The root of a Greater Tree like this:
                 18
                /   
              20     13

    题意:给定一个二叉搜索树,把它转换成为累加树,使得每个节点的值是原来的节点值加上所有大于它的节点值之和。
    做树的题一定要利用条件,就是特别的给了一个什么样的树,这个树有什么特性
    二叉搜索树的特点是 右>根>左,也就是说中序有序,我们把中序倒过来就正好是从大到小的
    什么意思呢,就是当你遍历到某个节点的时候,比它大的都已经遍历完了,我们只需维护一个max就行
    class Solution {
        private int max = 0;
        private void convert(TreeNode root) {
            if (root == null)
                return;
            convert(root.right);
            root.val += max;
            max = root.val;
            convert(root.left);
        }
        public TreeNode convertBST(TreeNode root) {
            convert(root);
            return root;
        }
    }
     
  • 相关阅读:
    android图片优化
    Android多线程断点下载的代码流程解析
    文件下载
    图片上传
    DomHelper
    SAX解析类:SaxHelper
    Android开发之画图的实现
    匿名内部类与equals之学习要扎实
    方法构造和方法重载之奥特曼与大boss之战
    排序之那些令人凌乱的那些小程序
  • 原文地址:https://www.cnblogs.com/Moriarty-cx/p/9784395.html
Copyright © 2020-2023  润新知