资讯专栏INFORMATION COLUMN

计算树结点路径的一种Javascript的实现

iOS122 / 1113人阅读

摘要:树结构如下南京理工大学化工学院有机化学无机化学无机组无机组计算机学院硬件学院软件学院学院学院主要算法如下运行结果感谢大家阅读,另外,在这边帮朋友推一个爱心众筹,希望大家能够奉献点爱心,朋友母亲,身患直肠癌,目前在北京武警总医院接收治疗,可留

树结构如下:

const tree = [
  {
    id: "00",
    name: "南京理工大学",
    children: [
      {
        id: "0001",
        name: "化工学院",
        children: [
          {
            id: "000101",
            name: "有机化学",
          },
          {
            id: "000102",
            name: "无机化学",
            children: [
              {
                id: "00010201",
                name: "无机1组",
              },
              {
                id: "00010202",
                name: "无机2组",
              }
            ]
          }
        ]
      },
      {
        id: "0002",
        name: "计算机学院",
        children: [
          {
            id: "000201",
            name: "硬件学院",
          },
          {
            id: "000202",
            name: "软件学院",
            children: [
              {
                id: "00020201",
                name: "Java学院"
              },
              {
                id: "00020202",
                name: "C#学院"
              }
            ]
          }
        ]
      }
    ]
  }
];

主要算法如下:

function makePath(tree, target) {

  var done = false, path = [];

  function traverse(tree, target) {
    
    for (let i = 0; i < tree.length; i++) {
      const node = tree[i];
      if (!done) {
        if (i > 0) {
          path.pop();
        }
        path.push(node.id);
        if (node.id === target) {
          done = true;
          return;
        } else {
          let children = node.children;
          if (children) {
            traverse(children, target);
          }
        }
      }
    }

    if (!done) {
      path.pop();
    }

    return;
  };

  traverse(tree, target);

  return path;
};
makePath(tree, "000101");

运行结果:

[ "00", "0001", "000101" ]

感谢大家阅读,另外,在这边帮朋友推一个爱心众筹,希望大家能够奉献点爱心,朋友母亲,身患直肠癌,目前在北京武警总医院接收治疗,可留言留下您的联系方式,日后感激大家!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/108388.html

相关文章

  • 数据结构与算法:二叉算法

    摘要:因此,根据题目给出的先序遍历和中序遍历,可以画出二叉树选参考数据结构与算法描述实现二叉树算法浅谈数据结构二叉树慕课网实现二叉树算法前端树控件腾讯软件开发面试题 内容衔接上一章 数据结构与算法:常见排序算法 内容提要 什么是树   - 为什么使用树 二叉树 二叉查找树 红黑树 B、B+树 堆 伸展树 树 可以点击链接感受下笔者用d3.js画的tree https://codepen...

    Little_XM 评论0 收藏0
  • 学习javascript数据结构(四)——

    摘要:原文博客地址学习数据结构四树知乎专栏简书专题前端进击者知乎前端进击者简书博主博客地址的个人博客人之所能,不能兼备,弃其所短,取其所长。通常子树被称作左子树和右子树。敬请期待数据结构篇最后一篇文章学习数据结构五图参考文章树数据结构二叉树 前言 总括: 本文讲解了数据结构中的[树]的概念,尽可能通俗易懂的解释树这种数据结构的概念,使用javascript实现了树,如有纰漏,欢迎批评指正。 ...

    Dean 评论0 收藏0
  • 「中高级前端」窥探数据结构世界- ES6版

    摘要:单链表与双向链表单链表是表示一系列节点的数据结构,其中每个节点指向列表中的下一个节点。且分别称为该结点的左子树与右子树。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个结点转换成为一个线性序列来表示。1. 什么是数据结构? 数据结构是在计算机中组织和存储数据的一种特殊方式,使得数据可以高效地被访问和修改。更确切地说,数据结构是数据值的集合,表示数据之间的关系,也包括了作用在数据上...

    Lucky_Boy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<