题目:
二叉树展开为链表:给定一个二叉树,原地将它展开为一个单链表。
例如,给定二叉树
1
/
2 5
/
3 4 6
将其展开为:
1
2
3
4
5
6
思路:
先使用前序遍历,再按顺序构建一个没有左子树的树。
程序:
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def flatten(self, root: TreeNode) -> None: """ Do not return anything, modify root in-place instead. """ if not root: return root self.auxiliary = [] self.preorder(root) index = 1 root.left = None node = root while index < len(self.auxiliary): node.right = TreeNode(self.auxiliary[index]) node = node.right index += 1 def preorder(self, root): if not root: return self.auxiliary.append(root.val) self.preorder(root.left) self.preorder(root.right)