Leetcode Hot100|114. 二叉树展开为链表 Python

Leetcode Hot100|114. 二叉树展开为链表 Python_第1张图片
我是用的递归做的,难度不算很大,主要是要把递归函数的功能、流程设计好。

class Solution(object):
    def flatten(self, root):
        """
        :type root: TreeNode
        :rtype: None Do not return anything, modify root in-place instead.
        """

        def in_order(root):  #把一棵树展开
            if not root:	
                return None

            right_node = root.right   

            left_node = in_order(root.left)  #先把左子树展开
            #摊开后根的左子树为空
            root.left = None

            #如果左子树非空,则让根的右子树为left_node,左子树的最右下的节点指向right_node。
            if left_node:
                root.right = left_node
                while left_node.right:
                    left_node = left_node.right
                left_node.right = right_node
            
			#把右节点摊开
            in_order(right_node)
            return root

        return in_order(root)

你可能感兴趣的:(Algorithm,链表,leetcode,数据结构)