题目描述
给定一个二叉树,原地将它展开为一个单链表。
例如,给定二叉树
将其展开为:
思路
思路很简单,按照例子给的,我们可以先前序访问二叉树节点并将其存到一个数组里,然后再将数组改成一个相当于是只含有右子树的二叉树
代码
# 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 = right
class Solution(object):
def flatten(self, root):
"""
:type root: TreeNode
:rtype: None Do not return anything, modify root in-place instead.
"""
if not root:
return
linklist = []
def preOrderList(root):
if root:
linklist.append(root)
preOrderList(root.left)
preOrderList(root.right)
preOrderList(root)
for i in range(1,len(linklist)):
curNode,preNode = linklist[i],linklist[i-1]
preNode.left = None
preNode.right = curNode