码迷,mamicode.com
首页 > 其他好文 > 详细

[LintCode] Convert BST to Greater Tree

时间:2017-09-07 10:05:47      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:body   lint   origin   ntc   while   blog   arch   treenode   asi   

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

Given a binary search Tree `{5,2,13}`:

              5
            /              2     13

Return the root of new tree

             18
            /             20     13

 

An in order traversal of a binary search tree gives an increasing sorted keys. For this problem, we need to visit all the keys in decreasing order. So we need to 

use the in order traversal with a twist:  right subtree -> root -> left subtree.

 

Solution 1. Recursion

 1 public class Solution {
 2     private int sum = 0; 
 3     public TreeNode convertBST(TreeNode root) {
 4         helper(root);
 5         return root;
 6     }
 7     private void helper(TreeNode node) {
 8         if(node == null) {
 9             return;
10         }
11         helper(node.right);
12         node.val += sum;
13         sum = node.val;
14         helper(node.left);
15     }
16 }


Solution 2. Iterative
 1 public class Solution {
 2     public TreeNode convertBST(TreeNode root) {
 3         Stack<TreeNode> stack = new Stack<TreeNode>();
 4         TreeNode curr = root;
 5         int sum = 0;
 6         
 7         while(curr != null || !stack.isEmpty()) {
 8             while(curr != null) {
 9                 stack.push(curr);
10                 curr = curr.right;
11             }
12             curr = stack.pop();
13             curr.val += sum;
14             sum = curr.val;
15             curr = curr.left;
16         }
17         return root;
18     }
19 }

 

 

[LintCode] Convert BST to Greater Tree

标签:body   lint   origin   ntc   while   blog   arch   treenode   asi   

原文地址:http://www.cnblogs.com/lz87/p/7271833.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!