中序遍历は必ずしも左中右の順序である必要はありません。
この解法では、queue を使用する必要もなく、stream を使用しています。すべてが自然です。
class Solution:
def increasingBST(self, root: TreeNode) -> TreeNode:
def gen(root):
if not root:
return
yield from gen(root.right)
yield root.val
yield from gen(root.left)
return reduce(lambda ans, i: TreeNode(i, None, ans), gen(root), None)
'''
ans = None
for i in gen(root):
ans = TreeNode(i, None, ans)
return ans
'''
翻訳:
中序遍歴は必ずしも左中右の順序である必要はありません。
この解法では、queueを使用する必要もなく、streamを使用しています。すべてが自然です。
class Solution:
def increasingBST(self, root: TreeNode) -> TreeNode:
def gen(root):
if not root:
return
yield from gen(root.right)
yield root.val
yield from gen(root.left)
return reduce(lambda ans, i: TreeNode(i, None, ans), gen(root), None)
'''
ans = None
for i in gen(root):
ans = TreeNode(i, None, ans)
return ans
'''