LeetCode Convert BST to Greater Tree
Posted Dylan_Java_NYC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Convert BST to Greater Tree相关的知识,希望对你有一定的参考价值。
原题链接在这里:https://leetcode.com/problems/convert-bst-to-greater-tree/description/
题目:
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
题解:
反着inorder走, 右中左, 更新sum.
Time Complexity: O(n), node数.
Space: O(logn), stack space.
AC Java:
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 class Solution { 11 12 int sum = 0; 13 14 public TreeNode convertBST(TreeNode root) { 15 reverseInorder(root); 16 return root; 17 } 18 19 private void reverseInorder(TreeNode root){ 20 if(root == null){ 21 return; 22 } 23 24 reverseInorder(root.right); 25 root.val += sum; 26 sum = root.val; 27 reverseInorder(root.left); 28 } 29 }
以上是关于LeetCode Convert BST to Greater Tree的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode - Convert BST to Greater Tree
LeetCode:Convert BST to Greater Tree
Leetcode 538. Convert BST to Greater Tree
[LeetCode] 538. Convert BST to Greater Tree