This commit is contained in:
youngyangyang04
2021-09-09 22:15:15 +08:00
parent b8306238f4
commit 666790ed6b
12 changed files with 164 additions and 99 deletions

View File

@@ -7,7 +7,7 @@
<p align="center"><strong>欢迎大家<a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p>
## 538.把二叉搜索树转换为累加树
# 538.把二叉搜索树转换为累加树
[力扣题目链接](https://leetcode-cn.com/problems/convert-bst-to-greater-tree/)
@@ -23,20 +23,20 @@
![538.把二叉搜索树转换为累加树](https://img-blog.csdnimg.cn/20201023160751832.png)
输入:[4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]
输出:[30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]
* 输入:[4,1,6,0,2,5,7,null,null,null,3,null,null,null,8]
* 输出:[30,36,21,36,35,26,15,null,null,null,33,null,null,null,8]
示例 2
输入root = [0,null,1]
输出:[1,null,1]
* 输入root = [0,null,1]
* 输出:[1,null,1]
示例 3
输入root = [1,0,2]
输出:[3,3,2]
* 输入root = [1,0,2]
* 输出:[3,3,2]
示例 4
输入root = [3,2,4,1]
输出:[7,9,4,10]
* 输入root = [3,2,4,1]
* 输出:[7,9,4,10]
提示:
@@ -45,7 +45,7 @@
* 树中的所有值 互不相同 。
* 给定的树为二叉搜索树。
## 思路
# 思路
一看到累加树,相信很多小伙伴都会疑惑:如何累加?遇到一个节点,然后在遍历其他节点累加?怎么一想这么麻烦呢。
@@ -162,17 +162,17 @@ public:
};
```
## 总结
# 总结
经历了前面各种二叉树增删改查的洗礼之后,这道题目应该比较简单了。
**好了,二叉树已经接近尾声了,接下来就是要对二叉树来一个大总结了**
## 其他语言版本
# 其他语言版本
Java
## Java
```Java
class Solution {
int sum;
@@ -195,15 +195,10 @@ class Solution {
}
```
Python
```python3
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
#递归法
## Python
递归法
```python
class Solution:
def convertBST(self, root: TreeNode) -> TreeNode:
def buildalist(root):
@@ -216,10 +211,10 @@ class Solution:
buildalist(root)
return root
```
Go
## Go
> 弄一个sum暂存其和值
弄一个sum暂存其和值
```go
//右中左
@@ -239,23 +234,10 @@ func RightMLeft(root *TreeNode,sum *int) *TreeNode {
}
```
JavaScript版本
> 递归
## JavaScript
递归
```javascript
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {TreeNode}
*/
var convertBST = function(root) {
let pre = 0;
const ReverseInOrder = (cur) => {
@@ -271,21 +253,8 @@ var convertBST = function(root) {
};
```
> 迭代
迭代
```javascript
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {TreeNode}
*/
var convertBST = function (root) {
let pre = 0;
let cur = root;