美文网首页
常用树算法

常用树算法

作者: 千茉紫依 | 来源:发表于2021-09-22 19:41 被阅读0次
  1. B树中找一个节点的父节点
findParentById = (json, id) => {
    let parentNode = null;
    let node = null;
    const getNode = (json, id) => {
      //1.第一层 root 深度遍历整个JSON
      for (let i = 0; i < json.length; i++) {
        if (node) {
          break;
        }
        let obj = json[i];
        //没有就下一个
        if (!obj || !obj.id) {
          continue;
        }
        //2.有节点就开始找,一直递归下去
        if (obj.id == id) {
          //找到了与text匹配的节点,结束递归
          node = obj;
          break;
        } else {
          //3.如果有子节点就开始找
          if (obj.children && obj.children.length != 0) {
            //4.递归前,记录当前节点,作为parent 父亲
            parentNode = obj;
            //递归往下找
            getNode(obj.children, id);
          } else {
            //跳出当前递归,返回上层递归
            continue;
          }
        }
      }
      //5.如果木有找到父节点,置为null,因为没有父亲  
      if (!node) {
        parentNode = null;
      }
      //6.返回结果obj
      return {
        parentNode: parentNode,
        node: node
      };
    }
    let result = [];
    let getResult = function (json, id) {
      node = null;
      parentNode = null;
      let obj = getNode(json, id);
      //判断是否闭包
      if (obj.parentNode) {
        //有父节点
        //获取父节点text继续查祖节点
        getResult(json, obj.parentNode.id);
        result.push(obj.parentNode.id);
      }
      return result;
    }
    getResult(json, id);
    //最后将查询push到result中
    result.push(id);
    console.log(result)
    return result
  }
  1. 树结构所有子节点属性值修改
const mapTree = org => {
    const haveChildren = Array.isArray(org.children) && org.children.length > 0;
    return {
         id : org.id,
         text: org.text,
         children:haveChildren ? org.children.map(i => mapTree(i)) : [],
     }
}

相关文章

  • 常用树算法

    B树中找一个节点的父节点 树结构所有子节点属性值修改

  • 决策树Decision Tree

    决策树是一种解决分类问题的算法 。 常用的 决策树算法有: ID3 算法 ID3 是最早提出的决策树算法,他...

  • 后缀树算法

    后缀树算法 后缀树算法在现代的比对工具中也是非常常见的一类比对算法,常用的STAR软件利用的就是后缀树算法,而bo...

  • 决策树学习算法包括3部分

    决策树学习算法包括3部分: 特征选择 树的生成 树的剪枝 常用的算法有:ID3、C4.5、CART

  • 机器学习常用算法

    机器学习常用算法总结如下:决策树随机森林算法逻辑回归SVM朴素贝叶斯K最近邻算法K均值算法Adaboost 算法神...

  • 算法:树

    树的常用算法先序、中序、后序递归算法: 层序递归算法:参考:https://blog.csdn.net/qq_38...

  • 决策树

    概要 决策树算法主要包括:特征的选择,树的生成,树的剪枝。常用的算法有ID3,C4.5,CART。 基本名词解释:...

  • 算法与数据结构

    五大常用算法之一:分治算法 五大常用算法之二:动态规划算法 五大常用算法之三:贪心算法 五大常用算法之四:回溯法 ...

  • 二叉树--序列化一棵树

    今天学习的算法是最基础最常用的算法:序列化一棵树。 题目介绍 给定任意一个二叉树,将树以字符串方式输出,例如: 实...

  • 算法草稿

    常用算法集合 字符处理算法数组与查找链表树算法思路 递归、动态规划、BFS/DFS、双指针、二分法搜索数据结构的...

网友评论

      本文标题:常用树算法

      本文链接:https://www.haomeiwen.com/subject/xqjscltx.html