解题步骤

  1. 分:获取左右子树
  2. 解:递归翻转左右子树
  3. 合:将翻转后的左右子树换个位置放到根节点上

通过最小堆的方式实现

  • 时间复杂度:O (n)
  • 空间复杂度:O (h)

    1. function invertTree(root) {
    2. if (!root) return null;
    3. return {
    4. val: root.val,
    5. left: invertTree(root.right),
    6. right: invertTree(root.left),
    7. };
    8. }

因为使用了递归,树的每个节点都被访问到了,所以时间复杂度是 O (n)。而空间复杂度为 O (h) h 为树的高度。