给定一个二叉树,原地将它展开为链表。
例如,给定二叉树
1
/ \
2 5
/ \ \
3 4 6
将其展开为:
1
\
2
\
3
\
4
\
5
\
6
解题思路
我们先要找到root.left
的最右边,此时为4
,然后4->right=root.right
,root.right=root.left
即可。
此时我们接着考虑2
作为root
,找到2.left
的最右边,我们发现是空。所以我们就将2
的左边,也就是3
,令3->right=2->right
,2->right=2->left
。
代码如下。
class Solution:
def flatten(self, root):
"""
:type root: TreeNode
:rtype: void Do not return anything, modify root in-place instead.
"""
cur = root
while cur:
if cur.left:
pre = cur.left
while pre.right:
pre = pre.right
pre.right = cur.right
cur.right = cur.left
cur.left = None
cur = cur.right
我将该问题的其他语言版本添加到了我的GitHub Leetcode
如有问题,希望大家指出!!!