题目描述
反转一个节点意味着其两个子节点发生了颠倒。你需要对二叉树中的所有节点做相同操作。就像下面这样。
思路分析
所用知识点 深度优先遍历,深度遍历节点,判断左右节点存在之一,交换顺序并继续向下走
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 春招闯关活动」, 点击查看 活动详情