给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。
例如:
输入: 二叉搜索树:
              5
            /   \
           2     13
输出: 转换为累加树:
             18
            /   \
          20     13
详见:https://leetcode.com/problems/convert-bst-to-greater-tree/description/

C++:

方法一:

/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode* convertBST(TreeNode* root)
{
int sum = 0;
helper(root, sum);
return root;
}
void helper(TreeNode*& node, int& sum)
{
if (!node)
{
return;
}
helper(node->right, sum);
node->val += sum;
sum = node->val;
helper(node->left, sum);
}
};

方法二:

/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode* convertBST(TreeNode* root) {
if (!root)
{
return nullptr;
}
int sum = 0;
stack<TreeNode*> stk;
TreeNode *p = root;
while (p || !stk.empty())
{
while (p)
{
stk.push(p);
p = p->right;
}
p = stk.top();
stk.pop();
p->val += sum;
sum = p->val;
p = p->left;
}
return root;
}
};

参考:http://www.cnblogs.com/grandyang/p/6591526.html

最新文章

  1. ArcGIS Engine开发前基础知识(2)
  2. Arduino 极速入门系列 - 光控灯(2) - 关于开关,上拉、下拉电阻那些事
  3. linux程序调试命令strace
  4. DAX 2009 for Retail&#39;s P job does not work after restoring AX database from another environment.
  5. Shuffle相关分析
  6. ubuntu第一次设置root密码
  7. C# 编写Window服务基础(一)
  8. C#读取Excel五种方式的体会
  9. G++ 教程(转)
  10. Flightgear 编译
  11. 【iOS知识学习】_iOS沙盒机制
  12. C/C++程序员面试大纲
  13. Building Particle Filters and Particle MCMC in NIMBLE
  14. Log4net快速配置使用指南。(快速搭建log4net日志平台手册)
  15. LVS负载均衡群集
  16. ☆ [NOIp2016] 天天爱跑步 「树上差分」
  17. MultipartFile(文件的上传)
  18. JAVA框架 Spring JDBC模板
  19. C#与Java 的区别
  20. HTTP协议中TCP的三次握手 and HTTPS

热门文章

  1. codeforces 665C C. Simple Strings(乱搞)
  2. 并不对劲的BJOI2019
  3. TX1 ssh配置
  4. Linux--top命令查看系统状态,所有值讲解
  5. mysql创建用户及授权
  6. C# 获取汉字的拼音首字母和全拼(含源码)
  7. Jmeter + Junit
  8. MYSQL5.7版本解决sql_mode=only_full_group_by问题
  9. lightoj1010【LCS】
  10. c#二维数组传递与拷贝