[路飞]_前端算法第六十一弹-翻转二叉树

138 阅读1分钟

翻转一棵二叉树。

示例:

输入:

     4
   /   \\
  2     7
 / \\   / \\
1   3 6   9

输出:

     4
   /   \\
  7     2
 / \\   / \\
9   6 3   1

递归

思路与算法

这是一道很经典的二叉树问题。显然,我们从根节点开始,递归地对树进行遍历,并从叶子节点先开始翻转。如果当前遍历到的节点 root 的左右两棵子树都已经翻转,那么我们只需要交换两棵子树的位置,即可完成以 root 为根节点的整棵子树的翻转。

var invertTree = function(root) {
    if (!root) return null;
    const left = invertTree(root.left);
    const right = invertTree(root.right);
    root.left = right;
    root.right = left;
    return root;
};