題目: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:還是得日更呀,總結一下總是好的。