二叉树是每个节点最多有两个子节点的树形结构,由对象或类手动构建,包含值、左子节点和右子节点;支持前序、中序、后序(DFS)及层序(BFS)四种遍历方式。

二叉树是一种每个节点最多有两个子节点的树形数据结构,通常分为左子节点和右子节点。它不是JavaScript内置的数据类型,而是靠对象(或类)手动构建的逻辑结构,常用于搜索、排序、表达式解析等场景。
一个二叉树节点通常包含三部分:当前值(value)、指向左子树的引用(left)、指向右子树的引用(right)。可以用构造函数或class定义:
示例:
class TreeNode {
constructor(val) {
this.val = val;
this.left = null;
this.right = null;
}
}
// 构建简单二叉树: 1
// / \
// 2 3
// / \ \
// 4 5 6
const root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
root.right.right = new TreeNode(6);
深度优先遍历(DFS)是最常用的二叉树遍历方法,按访问根节点的时机分为三类:
立即学习“Java免费学习笔记(深入)”;
通用递归写法(以中序为例):
function inorderTraversal(root) {
const result = [];
function traverse(node) {
if (!node) return;
traverse(node.left); // 左
result.push(node.val); // 根
traverse(node.right); // 右
}
traverse(root);
return result;
}
广度优先遍历,按层级从上到下、从左到右访问节点。需借助队列(用数组模拟)实现:
示例:
function levelOrderTraversal(root) {
if (!root) return [];
const result = [];
const queue = [root];
while (queue.length > 0) {
const node = queue.shift();
result.push(node.val);
if (node.left) queue.push(node.left);
if (node.right) queue.push(node.right);
}
return result; // 如 [1,2,3,4,5,6]
}
Cannot read property 'xxx' of null
基本上就这些。理解节点结构 + 掌握四种遍历的顺序和用途,就能应对大多数二叉树问题。
以上就是JavaScript中什么是二叉树_如何遍历节点的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号