标签:init return time problem binary put ref problems esc
原题链接在这里: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
标签:init return time problem binary put ref problems esc
原文地址:http://www.cnblogs.com/Dylan-Java-NYC/p/7514423.html