zoukankan      html  css  js  c++  java
  • 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.
    class TreeNode:
        def __init__(self, x):
            self.val = x
            self.left = None
            self.right = None
    
    class Solution:
        def convertBST(self, root):
            """
            :type root: TreeNode
            :rtype: TreeNode
            """
            a = []
            if root is None:
                return root
            def inorder(root):
                if root.left:
                    inorder(root.left)
                a.append(root.val)
                if root.right:
                    inorder(root.right)
            inorder(root)
            for i in range(len(a)-2,-1,-1):
                a[i] += a[i+1]
            pos = 0
            def change(root):
                nonlocal pos
                if root.left:
                    change(root.left)
                root.val = a[pos]
                pos += 1
                if root.right:
                    change(root.right)
            change(root)
            return root
    
  • 相关阅读:
    文件搜索和图像裁剪
    Mat的复制
    map
    substr
    cin,scanf
    strstr
    Applying vector median filter on RGB image based on matlab
    sobel算子的一些细节
    matlab 有趣小细节
    高斯混合模型(GMM)
  • 原文地址:https://www.cnblogs.com/bernieloveslife/p/9836231.html
Copyright © 2011-2022 走看看