以下是使用JavaScript实现将二叉树深度n以下的节点进行翻转的代码:
// 定义二叉树节点
class TreeNode {
constructor(value) {
this.val = value;
this.left = null;
this.right = null;
}
}
// 翻转二叉树函数(深度优先搜索)
function invertTree(root, depth) {
if (root === null || depth < 0) return; // 边界情况,空节点或超出深度直接返回
// 当前节点需要翻转,交换左右子节点
let temp = root.left;
root.left = root.right;
root.right = temp;
// 继续递归翻转左右子树
invertTree(root.left, depth - 1);
invertTree(root.right, depth - 1);
}
// 创建一棵二叉树
let tree = new TreeNode(4);
tree.left = new TreeNode(2);
tree.right = new TreeNode(7);
tree.left.left = new TreeNode(1);
tree.left.right = new TreeNode(3);
tree.right.left = new TreeNode(6);
tree.right.right= new TreeNode(9);
console.log("翻转前:", tree);
invertTree(tree, 2); // 将深度为2以下的节点进行翻转
console.log("翻转后:", tree);
在上述代码中,我们通过添加一个参数 depth 来指定要翻转的深度。在递归过程中,如果遇到指定深度以下的节点,则执行节点翻转操作。其他深度的节点不受影响。
请注意,这里的深度是从0开始计算的,即根节点的深度为0。在示例中,我们将深度为2以下的节点进行了翻转操作。
内容由零声教学AI助手提供,问题来源于学员提问




