Update 0538.把二叉搜索树转换为累加树.md

This commit is contained in:
jianghongcheng
2023-05-23 21:57:22 -05:00
committed by GitHub
parent 76e3811c5e
commit 14acf5a554

View File

@ -200,8 +200,30 @@ class Solution {
```
## Python
**递归**
递归法(版本一)
```python
# 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
class Solution:
def convertBST(self, root: TreeNode) -> TreeNode:
self.pre = 0 # 记录前一个节点的数值
self.traversal(root)
return root
def traversal(self, cur):
if cur is None:
return
self.traversal(cur.right)
cur.val += self.pre
self.pre = cur.val
self.traversal(cur.left)
```
递归法(版本二)
```python
# Definition for a binary tree node.
# class TreeNode:
@ -234,7 +256,32 @@ class Solution:
return root
```
**迭代**
迭代法(版本一)
```python
class Solution:
def __init__(self):
self.pre = 0 # 记录前一个节点的数值
def traversal(self, root):
stack = []
cur = root
while cur or stack:
if cur:
stack.append(cur)
cur = cur.right # 右
else:
cur = stack.pop() # 中
cur.val += self.pre
self.pre = cur.val
cur = cur.left # 左
def convertBST(self, root):
self.pre = 0
self.traversal(root)
return root
```
迭代法版本二
```python
class Solution:
def convertBST(self, root: Optional[TreeNode]) -> Optional[TreeNode]: