题前
老实说,这道放五天前我是不会写的。
前两天写了BFS后,这道题就变得容易了。
此题也是由著名的Google 白板面试事件一下火了。
作为非大牛,准备面试还是挺重要的。
题目大意
将树对称。
比如[1,2,3,4,5,6] -> [1,3,2,null,6,5,4]
懒得画二叉树了。。。
确实应该写一个二叉树生成函数了,其实没几行。好懒
直觉思路
当然是BFS+SWAP啦
我的解法
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def bfs(self, root):
queue = [root]
while queue:
node_now = queue[0]
queue = queue[1:]
yield node_now
if node_now.left != None:
queue.append(node_now.left)
if node_now.right!= None:
queue.append(node_now.right)
def invertTree(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
if root == None:
return None
gtr = self.bfs(root)
for node in gtr:
node.left, node.right = node.right, node.left # swap
return root
速度还是相当慢,我想应该是我拿list当queue使的原因吧。
留个作业明天写
完成测试用二叉树的生成算法
PS:leetcode的custom test其实很好用呃。