zoukankan      html  css  js  c++  java
  • LeetCode 538. Convert BST to Greater Tree

    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

    题解思路:

    相当于原本是升序遍历(左根右),现在变成了降序,但是生成这些数的顺序是(右根左,逐渐累加)

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
        int cur_sum = 0;
    public:
        TreeNode* convertBST(TreeNode* root)
        {
            travel(root);
            return root;
        }
        
        //变成了降序,但是生成可以用 右根左 来生成
        void travel(TreeNode *root)
        {
            if (!root) return;
            
            if (root->right)
            {
                travel(root->right);    
            }
            
            root->val = (cur_sum += root->val);
            
            if (root->left)
            {
                travel(root->left);
            }
            
        }
            
    };

  • 相关阅读:
    移动端(手机端)页面自适应解决方案1(rem布局)---750设计稿
    ionic4之ion-sliders
    ionic4 新建
    Object的多种方法
    angular的Hash 模式和 HTML 5 模式
    关于滚动条
    前端笔记(1-20)
    百度图片网址
    ImageLoader_显示图片
    viewpager_轮播
  • 原文地址:https://www.cnblogs.com/douzujun/p/10925728.html
Copyright © 2011-2022 走看看