Transform a Binary Search Tree into a Greater Sum Tree

作者:无名 - 软件应用 -

Given a Binary Search Tree (where all nodes on the left child branch are less than the node), and all nodes to the right are greater/equal to the node), transform it into a Greater Sum Tree where each node contains sum of it together with all nodes greater than that node. Example diagram is here:

Transform a Binary Search Tree into a Greater Sum Tree_第1张图片

int sum = 0;
public TreeNode replaceBST(TreeNode node) {
	if(node == null) return null;
	replaceBST(node.right);
	int tmp = node.val;
	node.val = sum;
	sum += tmp;
	replaceBST(node.left);
	return node;
}

 

如果最大的节点的值不被更新为0的话,可以这样:

int sum = 0;
boolean changed = false;
public TreeNode replaceBST(TreeNode node) {
	if(node == null) return null;
	replaceBST(node.right);
	int tmp = node.val;
	if(changed) {
		node.val = sum;
		sum += tmp;
	} else {
		changed = true;
		sum = node.val;
	}
	replaceBST(node.left);
	return node;
}

Reference:

http://codereview.stackexchange.com/questions/55966/transform-a-binary-search-tree-into-a-greater-sum-treerq=1

以上就是由(IT人知识库http://www.itpeo.net/15315/3487020.html)本站为大家整理





标签
rfedfre

Action中的get方法会根据Json拦截器序列化后返回给前台问题

DPAP开发平台下,Action中的get方法会根据Json拦截器序列化后返回给前台,不需要返回给前台的属性在Actio... ...

rfedfre

iReport+jasperReport之CSV、XML数据源

jasperReport支持多种格式的数据源,CSV(Comma Separated values)... ...

rfedfre

详解Spring事件驱动模型

  事件驱动模型简介 事件驱动模型也就是我们常说的观察者,或者发布-订阅模型;理解它的几个关键点... ...

rfedfre

js+jsp+servlet 实现跨全域多文件上传(原创)

纯粹的js 加上 jsp和servlet 实现的跨全域多文件上传,队列方式上传,兼容ie/ff/chorme 浏览... ...

rfedfre

开源 免费 java CMS - FreeCMS1.4-功能说明-站点管理

下载地址:http://code.google.com/p/freecms/  站点管理 F... ...

rfedfre

PS9/8 操作技巧汇总

这里注意力量条出现后按L1或R1是决定偏转方向(内外脚背?) 近距离任意球心得 一.一拨一射推荐度:特点:球速快... ...

rfedfre

Struts2.3.8_Chapter02_Part01

1. 增加Struts2.3.8开发必要的jar包     asm-3.3.ja... ...

rfedfre

设计模式之我见(1):设计模式概述

(一) 概述 什么是设计模式: 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编... ...

rfedfre

Spring3 Web MVC下的数据格式化(第二篇)——《跟我学Spring3 Web MVC》抢先看

  基于spring-framework-3.1.1.RELEASE 7.3、数据格式化 在如Web ... ...

rfedfre

Cordova 3.x 源码分析(2) -- cordova.js概要

前提环境: 引用 Platform: android Version: 3.4.0 ... ...

rfedfre

spring bean scopes

spring的bean的scope主要是用来指定如何创建bean对象的,系统已经实现的主要有五中类型,分别是:si... ...

rfedfre

Enum的深入浅出

     还记得上一篇是如何运用Enum来定义一周的的吗?   ... ...

rfedfre

新浪微博的Log输出

在用手机调试程序的时候,无意中发现com.sina.weibo的应用再不断输出Log信息,从名称看可以肯定是新浪微博的程... ...

rfedfre

腾讯的Android助手占用adb,android sdk无法连接

打开Eclipse发现adb连接不上,手动重启adb也不成功,找了下谁占用了端口,原来是tx,adb.exe还被改... ...

rfedfre

Linux查看端口占用与否

查看端口9010是否已占用 方式一: [dev_ydzj_1@localhost logs]$ lsof -... ...

rfedfre

查找某用户下的子线程的父线程

一、 执行命令 ps   -ux    显示当前用户所开线程 二... ...

rfedfre

java socket报文通信(一) socket的建立

今天来和大家分享一下java中如何使用socket进行通信。先来啰嗦两句,看看Tcp/ip和udp: TCP是... ...

rfedfre

关于junit生成单元测报

 前几天项目中需要用junit生测试文档,到网上找了一下,现将方法贴出,与大家共享 项目不能引用到其... ...

rfedfre

1.设计模式之前奏

一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式... ...

rfedfre

UIModalPresentationFormSheet模式下resignFirstResponder无法隐藏键盘

弹出UIModalPresentationFormSheet模式 - (IBAction)buttonPress... ...