继续今天的第二道题
https://leetcode-cn.com/problems/convert-bst-to-greater-tree/description/
把一棵二叉树变成累加树
累加树的定义就是“使得每个节点的值是原来的节点值加上所有大于它的节点值之和。”
这道题,可以就化解为后序遍历,然后在遍历过程中去处理值,因为对于一个节点来说他的值就是他右子树的按照这个所有节点值的和加上自己的值,这就是一个递归定义的哦
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def convertBST(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
self.val = 0
self.helper(root,self.val)
return root
def helper(self,root,val):
if root:
self.helper(root.right,val)
root.val,self.val = self.val+root.val,self.val+root.val
self.helper(root.left,val)
嗯,最近一直都在用Python刷题,Java方面有些遗忘了,要多熟悉,那么就再立一个小的flag吧
从明天起,刷的两道题都同时有Java版和Python版,然后顺便再重新做一遍之前30天做过的题目,就用Java写吧
嗯,睡觉了