Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 7bb935c

Browse files
Merge pull request youngyangyang04#830 from casnz1601/patch-9
Update 0538.把二叉搜索树转换为累加树.md
2 parents aa20c37 + b38880b commit 7bb935c

File tree

1 file changed

+32
-12
lines changed

1 file changed

+32
-12
lines changed

‎problems/0538.把二叉搜索树转换为累加树.md

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -196,20 +196,40 @@ class Solution {
196196
```
197197

198198
## Python
199-
200-
递归法
201-
```python
199+
**递归**
200+
201+
```python3
202+
# Definition for a binary tree node.
203+
# class TreeNode:
204+
# def __init__(self, val=0, left=None, right=None):
205+
# self.val = val
206+
# self.left = left
207+
# self.right = right
202208
class Solution:
203-
def convertBST(self, root: TreeNode) -> TreeNode:
204-
defbuildalist(root):
205-
ifnot root: returnNone
206-
buildalist(root.right) #右中左遍历
207-
root.val +=self.pre
208-
self.pre = root.val
209-
buildalist(root.left)
210-
self.pre =0#记录前一个节点的数值
211-
buildalist(root)
209+
def __init__(self):
210+
self.pre = TreeNode()
211+
212+
defconvertBST(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
213+
'''
214+
倒序累加替换:
215+
[2, 5, 13] -> [[2]+[1]+[0], [2]+[1], [2]] -> [20, 18, 13]
216+
'''
217+
self.traversal(root)
212218
return root
219+
220+
def traversal(self, root: TreeNode) -> None:
221+
# 因为要遍历整棵树,所以递归函数不需要返回值
222+
# Base Case
223+
if not root:
224+
return None
225+
# 单层递归逻辑:中序遍历的反译 - 右中左
226+
self.traversal(root.right) #
227+
228+
# 中节点:用当前root的值加上pre的值
229+
root.val += self.pre.val #
230+
self.pre = root
231+
232+
self.traversal(root.left) #
213233
```
214234

215235
## Go

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /