Flatten Binary Tree to Linked List (Python)
kitt
posted @ 2014年2月09日 00:21
in LeetCode
, 4141 阅读
看了这个, 挺简洁的, 不断消灭每一层的左子树。
# Definition for a binary tree node # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: # @param root, a tree node # @return nothing, do it in place def flatten(self, root): # eliminate each level's root's left child while root: if root.left: p = root.left while p.right: p = p.right p.right = root.right root.right = root.left root.left = None root = root.right
2015年4月03日 10:58
可以用helper function,然后每次return的时候return list的头和尾 这样就不用每次都while p.right != None: p = p.right
(while p.right != None: p = p.right)这个感觉好浪费时间的.....
2015年4月07日 04:35
你说的是递归的解法吗? 看到有人说递归的话会用到stack,就不是in place了,我在讨论区里发现了更简洁的做法,你瞅一下~ @fuiiii:
2015年4月07日 13:18
噢 是哦 我那个应该不能算in plan
讨论区是在哪里?谢谢!
2015年4月07日 17:29
点Discuss按钮 @fuiiii: