Tree 538. Convert BST to Greater Tree

这道题让我们将二叉搜索树转为较大树,通过题目汇总的例子可以明白,是把每个结点值加上所有比它大的结点值总和当作新的结点值。

二叉搜索树的定义:
BST 的定义:(二叉搜索树)
左子树的所有节点值都小于根节点;
右子树的所有节点值都大于根结点;
左右子树也是BST

可以知道,根结点转化后=根节点+所有右子树节点的和
那么,观察右子树,其根结点a转化后=根结点a+其所有右子树节点的和
以此类推,可以知道必须先对最后一个右子树处理
对于最后一个右子树,根结点b = b+右节点c;
右节点c = c;
左节点a = a+初始b+初始c。
也就是说,变量sum初始为0
1、先求原始值sum = c;
2、到根结点,sum = b+c,然后b = sum
3、到左节点,根结点、右节点都大于它,所以 sum = a+sum;a=sum

上面123所述,可以看出是右根左的中序遍历,因此有以下代码:

11.PNG
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • B树的定义 一棵m阶的B树满足下列条件: 树中每个结点至多有m个孩子。 除根结点和叶子结点外,其它每个结点至少有m...
    文档随手记阅读 14,569评论 0 25
  • 课程介绍 先修课:概率统计,程序设计实习,集合论与图论 后续课:算法分析与设计,编译原理,操作系统,数据库概论,人...
    ShellyWhen阅读 6,904评论 0 3
  • 参考两篇其他bolg总结的二叉树:https://github.com/xy7313/lintcode/blob/...
    暗黑破坏球嘿哈阅读 7,028评论 0 1
  • 一. 算法之变,结构为宗 计算机在很多情况下被应用于检索数据,比如航空和铁路运输业的航班信息和列车时刻表的查询,都...
    Leesper阅读 11,926评论 13 42
  • B树 1.前言: 动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balan...
    铁甲依然在_978f阅读 5,281评论 0 4