翻转二叉树

2021-12-01  本文已影响0人  walkerwzy

最近在找工作,所以这些算法梗又出现在了我的阅读视野里,比如经典的homebrew作者吐槽的翻转二叉树的问题。


image.png

我本以为是根和叶节点倒转过来,原来是同层里面的左右翻转。

那么就是把左边换到右边,右边换到左边呗,可以考虑递归。我一直用一个原则理解递归,就是把命令传达下去(比如上面的左右互换,就完了),而不关心细节,只有最末端的那个大头兵才是真正做业务的人,写了一下,递归加业务也就4行代码:

image.png

具体到这个问题,就是我把left和right互换就是了
然后left和right你们做好自己的子级的互换,我不管,所以核心代码就一句
left, right = right, left,前面是为了稳妥,通过了之后,直接用python这种左右互换的特性,那就真是一句代码了:

def invertTree(self, root: TreeNode) -> TreeNode:
    if root is None:
        return None
    root.right, root.left = self.invertTree(root.left), self.invertTree(root.right)
    return root
上一篇下一篇

猜你喜欢

热点阅读