天天看點

打卡群刷題總結0813——二叉樹展開為連結清單

題目:114. 二叉樹展開為連結清單

連結:https://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list

給定一個二叉樹,原地将它展開為一個單連結清單。

例如,給定二叉樹

1

/ \

2 5

/ \ \

3 4 6

将其展開為:

1

\

2

\

3

\

4

\

5

\

6

題目沒有表述清楚,必須是按照前序周遊的順序生成結果,同時利用的是右孩子指針。

解題:

1、可以用棧,也可以直接在前序周遊的基礎上更改(注意要儲存node.right,别被新指針覆寫了)

代碼:

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, val=0, left=None, right=None):#         self.val = val#         self.left = left#         self.right = rightclass Solution(object):    def traverse(self, node, parent):        parent.right = node        last_node = node        right = node.right        if node.left:            last_node = self.traverse(node.left, last_node)            node.left = None        if right:            last_node = self.traverse(right, last_node)        return last_node        def flatten(self, root):        """        :type root: TreeNode        :rtype: None Do not return anything, modify root in-place instead.        """        if not root:            return root        parent = ListNode(0)        self.traverse(root, parent)        return parent.right           

複制

PS:刷了打卡群的題,再刷另一道題,并且總結,确實耗費很多時間。如果時間不夠,以後的更新會總結打卡群的題。

PPS:還是得日更呀,總結一下總是好的。