Path Sum (Python)
Rotate Image (Python)

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
Avatar_small
fuiiii 说:
2015年4月03日 10:58

可以用helper function,然后每次return的时候return list的头和尾 这样就不用每次都while p.right != None: p = p.right

(while p.right != None: p = p.right)这个感觉好浪费时间的.....

Avatar_small
kitt 说:
2015年4月07日 04:35

你说的是递归的解法吗? 看到有人说递归的话会用到stack,就不是in place了,我在讨论区里发现了更简洁的做法,你瞅一下~ @fuiiii:

Avatar_small
fuiiii 说:
2015年4月07日 13:18

噢 是哦 我那个应该不能算in plan
讨论区是在哪里?谢谢!

Avatar_small
kitt 说:
2015年4月07日 17:29

点Discuss按钮 @fuiiii:


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter