二叉树 反转二叉树

100 阅读1分钟

题目

  • 给定一个二叉树,返回反转过后的二叉树,如果当前节点不为空,交换它的左右子节点,然后递归地反转左子树和右子树。

image.png

// 定义二叉树节点
function TreeNode(val) {
  this.val = val;
  this.left = this.right = null;
}

// 递归反转二叉树
function invertTree(root) {
  if (root === null) {
    return null;
  }

  let temp = root.left;
  // 返回右树节点
  root.left = invertTree(root.right);
  // 返回左树节点
  root.right = invertTree(temp);

  return root;
}

// 示例
let root = new TreeNode(4);
root.left = new TreeNode(2);
root.right = new TreeNode(7);
root.left.left = new TreeNode(1);
root.left.right = new TreeNode(3);
root.right.left = new TreeNode(6);
root.right.right = new TreeNode(9);

let invertedRoot = invertTree(root);
console.log(invertedRoot);