前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >计算树结点路径的一种Javascript的实现

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

作者头像
MudOnTire
发布2019-05-26 11:01:23
4120
发布2019-05-26 11:01:23
举报
文章被收录于专栏:MudOnTireMudOnTireMudOnTire

树结构如下:

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' ]

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

clipboard.png
clipboard.png
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档