JavaScript中什么是二叉树_如何遍历节点

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

javascript中什么是二叉树_如何遍历节点

二叉树是一种每个节点最多有两个子节点的树形数据结构,通常分为左子节点和右子节点。它不是JavaScript内置的数据类型,而是靠对象(或类)手动构建的逻辑结构,常用于搜索、排序、表达式解析等场景。

二叉树的基本结构

一个二叉树节点通常包含三部分:当前值(value)、指向左子树的引用(left)、指向右子树的引用(right)。可以用构造函数或class定义:

示例:

class TreeNode {  constructor(val) {    this.val = val;    this.left = null;    this.right = null;  }}// 构建简单二叉树:    1//                    /   //                   2     3//                  /      //                 4   5     6const 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)

深度优先遍历(DFS)是最常用的二叉树遍历方法,按访问根节点的时机分为三类:

立即学习“Java免费学习笔记(深入)”;

前序遍历(根→左→右):先处理当前节点,再递归左子树,最后右子树。适合复制树、序列化。 中序遍历(左→根→右):先递归左子树,再处理当前节点,最后右子树。对二叉搜索树(BST)而言,结果是升序排列后序遍历(左→右→根):先递归左右子树,最后处理当前节点。适合计算子树大小、释放内存、求树高。

通用递归写法(以中序为例):

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;}

层序遍历(BFS)

广度优先遍历,按层级从上到下、从左到右访问节点。需借助队列(用数组模拟)实现:

初始化队列,把根节点入队 每次取出队首节点,记录其值,并将其左右子节点(若存在)依次入队 重复直到队列为空

示例:

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 中序遍历判BST:可边遍历边比较当前值是否大于前一个,不满足即非BST 迭代写法虽稍长,但更可控,适合面试或性能敏感场景

基本上就这些。理解节点结构 + 掌握四种遍历的顺序和用途,就能应对大多数二叉树问题。

以上就是JavaScript中什么是二叉树_如何遍历节点的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1542760.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月21日 14:28:35
下一篇 2025年12月21日 14:28:45

相关推荐

发表回复

登录后才能评论
关注微信