小黑昨晚论文又写了1000字,干到了一点,实习任务遇到了一些挑战的leetcode之旅:剑指 Offer II 052. 展平二叉搜索树&剑指 Offer II 054. 所有大于等于节点的值之和

剑指 Offer II 052. 展平二叉搜索树

小黑代码

# 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 increasingBST(self, root: TreeNode) -> TreeNode:
        # 初始化中序前结点和开始结点
        self.pre = None
        self.start =None
        # 递归函数
        def dfs(node):
            if not node:
                return
            dfs(node.left)
            # 结点操作
            if self.pre:
                self.pre.right = node
                self.pre.left = None
            else:
                self.start = node
            self.pre = node
            dfs(node.right)
        dfs(root)
        if self.pre:
            self.pre.left = None
        return self.start

小黑昨晚论文又写了1000字,干到了一点,实习任务遇到了一些挑战的leetcode之旅:剑指 Offer II 052. 展平二叉搜索树&剑指 Offer II 054. 所有大于等于节点的值之和_第1张图片

递归法

# 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 increasingBST(self, root: TreeNode) -> TreeNode:
        # 初始化头结点
        head = TreeNode()
        self.link = head
        
        def dfs(node):
            if not node:
                return
            dfs(node.left)
            # 结点操作
            self.link.right = node
            self.link = node
            self.link.left = None
            dfs(node.right)
        dfs(root)
        return head.right

小黑昨晚论文又写了1000字,干到了一点,实习任务遇到了一些挑战的leetcode之旅:剑指 Offer II 052. 展平二叉搜索树&剑指 Offer II 054. 所有大于等于节点的值之和_第2张图片

剑指 Offer II 054. 所有大于等于节点的值之和

小黑代码

# 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.sum = 0
        # 逆向中序递归函数
        def dfs(node):
            if not node:
                return
            dfs(node.right)
            # 不断迭代sum
            self.sum += node.val
            node.val = self.sum
            dfs(node.left)
        dfs(root)
        return root

小黑昨晚论文又写了1000字,干到了一点,实习任务遇到了一些挑战的leetcode之旅:剑指 Offer II 052. 展平二叉搜索树&剑指 Offer II 054. 所有大于等于节点的值之和_第3张图片

Mirris中序

# 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:
        sum_ = 0
        # Mirris中序
        node = root
        while node:
            if node.right:
                # 找到其最左结点
                curr = node.right
                while curr.left and curr.left != node:
                    curr = curr.left
                # node的右子树是否遍历完成
                if curr.left:
                    # 结点操作
                    sum_ += node.val
                    node.val = sum_
                    curr.left = None
                    node = node.left
                else:
                    curr.left = node
                    node = node.right
            else:
                sum_ += node.val
                node.val = sum_
                node = node.left
        return root

小黑昨晚论文又写了1000字,干到了一点,实习任务遇到了一些挑战的leetcode之旅:剑指 Offer II 052. 展平二叉搜索树&剑指 Offer II 054. 所有大于等于节点的值之和_第4张图片

小黑生活

买的筋膜枪终于到货了

小黑昨晚论文又写了1000字,干到了一点,实习任务遇到了一些挑战的leetcode之旅:剑指 Offer II 052. 展平二叉搜索树&剑指 Offer II 054. 所有大于等于节点的值之和_第5张图片

昨天写论文写到一点,早上没起来吃早饭,在麦当劳吃的,希望这段日子快点儿过去,毕业与工作顺利

小黑昨晚论文又写了1000字,干到了一点,实习任务遇到了一些挑战的leetcode之旅:剑指 Offer II 052. 展平二叉搜索树&剑指 Offer II 054. 所有大于等于节点的值之和_第6张图片

尽管很疲惫,依然坚持英语与运动

小黑昨晚论文又写了1000字,干到了一点,实习任务遇到了一些挑战的leetcode之旅:剑指 Offer II 052. 展平二叉搜索树&剑指 Offer II 054. 所有大于等于节点的值之和_第7张图片

小黑昨晚论文又写了1000字,干到了一点,实习任务遇到了一些挑战的leetcode之旅:剑指 Offer II 052. 展平二叉搜索树&剑指 Offer II 054. 所有大于等于节点的值之和_第8张图片

华为OD算法笔试过啦,但是还是由于学历问题转不了正,希望小黑未来几年的努力规避学历问题!!

小黑昨晚论文又写了1000字,干到了一点,实习任务遇到了一些挑战的leetcode之旅:剑指 Offer II 052. 展平二叉搜索树&剑指 Offer II 054. 所有大于等于节点的值之和_第9张图片

吉野家牛肉饭午餐

小黑昨晚论文又写了1000字,干到了一点,实习任务遇到了一些挑战的leetcode之旅:剑指 Offer II 052. 展平二叉搜索树&剑指 Offer II 054. 所有大于等于节点的值之和_第10张图片
小黑昨晚论文又写了1000字,干到了一点,实习任务遇到了一些挑战的leetcode之旅:剑指 Offer II 052. 展平二叉搜索树&剑指 Offer II 054. 所有大于等于节点的值之和_第11张图片

咖啡甜点算法,无意间发现坐在我对面的小姐姐好漂亮~

小黑昨晚论文又写了1000字,干到了一点,实习任务遇到了一些挑战的leetcode之旅:剑指 Offer II 052. 展平二叉搜索树&剑指 Offer II 054. 所有大于等于节点的值之和_第12张图片
小黑昨晚论文又写了1000字,干到了一点,实习任务遇到了一些挑战的leetcode之旅:剑指 Offer II 052. 展平二叉搜索树&剑指 Offer II 054. 所有大于等于节点的值之和_第13张图片

开启动态规划之旅啦~~~~~~~~

你可能感兴趣的:(小黑的日常leetcode之旅,leetcode,深度优先,算法)