当前位置:首页 > JavaScript

js 实现二叉树

2026-01-30 16:52:02JavaScript

实现二叉树的基本结构

在 JavaScript 中,二叉树可以通过对象或类实现。每个节点包含 valueleftright 属性,分别表示节点值、左子树和右子树。

class TreeNode {
  constructor(value) {
    this.value = value;
    this.left = null;
    this.right = null;
  }
}

创建二叉树实例

通过实例化节点并连接左右子树构建二叉树。例如,构建一个简单的二叉树:

const root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);

二叉树的遍历方法

常见的遍历方式包括前序、中序和后序遍历,递归实现如下:

前序遍历(根-左-右)

function preorderTraversal(node) {
  if (node === null) return;
  console.log(node.value);
  preorderTraversal(node.left);
  preorderTraversal(node.right);
}

中序遍历(左-根-右)

function inorderTraversal(node) {
  if (node === null) return;
  inorderTraversal(node.left);
  console.log(node.value);
  inorderTraversal(node.right);
}

后序遍历(左-右-根)

function postorderTraversal(node) {
  if (node === null) return;
  postorderTraversal(node.left);
  postorderTraversal(node.right);
  console.log(node.value);
}

层序遍历(广度优先)

使用队列实现逐层遍历:

function levelOrderTraversal(root) {
  if (root === null) return;
  const queue = [root];
  while (queue.length > 0) {
    const node = queue.shift();
    console.log(node.value);
    if (node.left) queue.push(node.left);
    if (node.right) queue.push(node.right);
  }
}

二叉树的插入与搜索

插入节点
根据二叉搜索树(BST)规则插入节点(左子树值小于根,右子树值大于根):

function insertNode(root, value) {
  if (root === null) return new TreeNode(value);
  if (value < root.value) {
    root.left = insertNode(root.left, value);
  } else {
    root.right = insertNode(root.right, value);
  }
  return root;
}

搜索节点

function searchNode(root, value) {
  if (root === null) return false;
  if (root.value === value) return true;
  if (value < root.value) {
    return searchNode(root.left, value);
  } else {
    return searchNode(root.right, value);
  }
}

二叉树的高度计算

递归计算树的最大深度:

function getHeight(node) {
  if (node === null) return 0;
  const leftHeight = getHeight(node.left);
  const rightHeight = getHeight(node.right);
  return Math.max(leftHeight, rightHeight) + 1;
}

示例:构建二叉搜索树

以下代码演示如何构建并操作二叉搜索树:

js 实现二叉树

let bstRoot = null;
bstRoot = insertNode(bstRoot, 10);
insertNode(bstRoot, 5);
insertNode(bstRoot, 15);
insertNode(bstRoot, 3);
console.log(searchNode(bstRoot, 5)); // 输出: true

标签: 二叉树js
分享给朋友:

相关文章

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…