114. Flatten Binary Tree to Linked List
題目:
https://leetcode.com/problems/flatten-binary-tree-to-linked-list/
難度:
Medium
有hint钟些,又是玩DFS的preorder鹅搪,用的loop僧免,也不算很聰明的算法
用stack來放node破花,每次把pop出來的node左邊變成null,把它的right指向下一個pop出來的node寿谴,也就是為嘛有prev芹枷,然后root處特殊處理一下
class Solution(object):
def flatten(self, root):
"""
:type root: TreeNode
:rtype: void Do not return anything, modify root in-place instead.
"""
if root == None:
return
s = []
s.append(root)
prev = root
while s:
node = s.pop()
if node.right:
s.append(node.right)
if node.left:
s.append(node.left)
node.left = None
if node == root:
continue
else:
prev.right = node
prev = node