1. 程式人生 > >Leetcode——538. Convert BST to Greater Tree

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

給定一個BST二叉樹,將當前的節點的值變為當前節點+所有比當前節點的值大的值

解題思路

因為給定的樹是BST,所以可以知道如果採用後續遍歷的方式,第一個找到的節點應該是最大的節點。所以採用遞迴的方式從最大的節點開始改變樹的值

AC程式碼

class Solution {
        int sum = 0;
    public TreeNode convertBST(TreeNode root) {

        post(root);
        return
root; } public void post(TreeNode root) { // TODO Auto-generated method stub //如果當前節點為null,則返回 if(root == null) return; //找到樹的最右邊的節點 post(root.right); //當前節點的值=比當前節點的值大的值之和+當前節點的值 root.val += sum; //更改比下一個節點大的所有節點的值的和 sum = root.val; //右子樹遍歷完,開始遍歷左子樹
post(root.left); } }

感謝