反转二叉树 | 刷题打卡

130 阅读1分钟

题目描述

反转一个节点意味着其两个子节点发生了颠倒。你需要对二叉树中的所有节点做相同操作。就像下面这样。

思路分析

所用知识点 深度优先遍历,深度遍历节点,判断左右节点存在之一,交换顺序并继续向下走

AC代码

// This is the type for the node
// type Node = null | {
//   value: number
//   left: Node
//   right: Node
// }


/**
 * @param {Node} node
 * @returns {Node}
 */
function invert(node) {
  //base case
  if (!node) {
    return null;
  }

  if (node.left) {
    invert(node.left);
  }
  if (node.right) {
    invert(node.right);
  }

  const temp = node.left;
  node.left = node.right
  node.right = temp;

  return node;
}

总结

这个题是深度优先遍历的入门,为下一题序列化和反序列化二叉树,以及再往后的实现jsx虚拟dom做热身
本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情