给出二叉搜索树的根节点,该二叉树的节点值各不相同,修改二叉树,使每个节点 node
的新值等于原树中大于或等于 node.val
的值之和。
提醒一下,二叉搜索树满足下列约束条件:
示例:
输入:[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]
提示:
1
和 100
之间。0
和 100
之间。解题思路:
代码实现:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def bstToGst(self, root: TreeNode) -> TreeNode:
self._bstToGst(root)
return root
def _bstToGst(self, root, val=0):
if not root.left and not root.right:
val = root.val + val
root.val = val
return val
if root.right:
val = root.val + self._bstToGst(root.right, val)
root.val = val
if root.left:
val = self._bstToGst(root.left, root.val)
return val
《97 Things Every Programmer Should Know》 - Ask, “What Would the User Do?” (You Are Not the User)
分享一个收费的手写笔记 App,GoodNotes 5,虽然需要 iPad 和 iPencil。
但是要是有条件强烈建议购买,无论是用来看书,做笔记,写草稿都是神器,个人体验非常棒。
附上一张刷题时的草稿:
学习是一件“逆人性”的事,就像锻炼身体一样,需要人持续付出,会让人感到痛苦,并随时想找理由放弃。
大部分人都认为自己爱学习,但是:
他们都是只有意识没有行动,他们是动力不足的人。 他们都不知道自己该学什么,他们缺乏方向和目标。 他们都不具备自主学习的能力,没有正确的方法和技能。 更要命的是,他们缺乏实践和坚持。
所以,学习不是努力读更多的书,盲目追求阅读的速度和数量,这会让人产生低层次的勤奋和成长的感觉,这只是在使蛮力。要思辨,要践行,要总结和归纳,否则,你只是在机械地重复某件事,而不会有质的成长的。
真正的学习,从来都不是很轻松的,而是那种你知道得越多,你的问题就会越多,你的问题越多,你就会思考得越多,你思考得越多,你就会越觉得自己知道得少,于是你就会想要了解更多。如此循环,是这么一种螺旋上升上下求索的状态。