目录
题目描述
给定一个二叉树,原地将它展开为一个单链表。
例如,给定二叉树
1 / \ 2 5 / \ \ 3 4 6
将其展开为:
1 \ 2 \ 3 \ 4 \ 5 \ 6
解题思路
我们需要两步完成这道题。
-
将左子树插入到右子树的地方
-
将原来的右子树接到左子树的最右边节点
考虑新的右子树的根节点,一直重复上边的过程,直到新的右子树为 null
扫描二维码关注公众号,回复:
11945083 查看本文章
func flatten(root *TreeNode) {
for root != nil {
if root.Left == nil {
root = root.Right
}else {
pre := root.Left
for pre.Right != nil {
pre = pre.Right
}
pre.Right = root.Right
root.Right = root.Left
root.Left = nil
root = root.Right
}
}
}