ZBLOG

二叉树深度n以下的节点翻转 js

以下是使用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助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=12970

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?