题目描述
给定一个二叉树,原地将它展开为一个单链表。
例如,给定二叉树
1
/
2 5
/
3 4 6
将其展开为:
1
2
3
4
5
6
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list
解答
# 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 ''' dfs,以从底层到顶层的顺序,依次展开。 ''' class Solution(object): def flatten(self, root): if root == None: return def dfs(root): if root.left != None: dfs(root.left) if root.right != None: dfs(root.right) if root.left != None and root.right != None: r = root if root.left.right != None: r = root.left.right while r.right != None: r = r.right r.right = root.right root.right = root.left root.left = None else: root.left.right = root.right root.right = root.left root.left = None elif root.left != None and root.right == None: root.right = root.left root.left = None elif root.left == None and root.right != None: pass else: return dfs(root)