递归找到节点后跳出递归循环

在js 的递归循环中,找到了节点想跳出递归循环,如果是单纯的return或者break的时候,并没有阻止递归的循环

// 造一个树数据
const treeList = [{id: "1",name: "a",children: [{id: "1-1",name: "a-1"}, {id: "1-2",name: "a-2"}]
}, {id: "2",name: "b",children: [{id: "2-1",name: "b-1"}, {id: "2-2",name: "b-2"}]
}, {id: "3",name: "c",children: [{id: "3-1",name: "c-1"}, {id: "3-2",name: "c-2"}, {id: "3-3",name: "c-3"}]
}, {id: "4",name: "d",children: [{id: "4-1",name: "d-1"}, {id: "4-2",name: "d-2"}, {id: "4-3",name: "d-3"}]
}]// 递归树
function deepTree(treeList, name) {for (let index = 0; index < treeList.length; index++) {const element = treeList[index];if (element.name == name) {console.log("查询到了该节点");return true; // 或者 break;}console.log("遍历树");if (element.children && element.children.length) {deepTree(element.children, name);}}
}// 要找到的节点
const name = "b-2";
// 调用函数
const flag = deepTree(treeList, name);
console.log("遍历树找到的结果", flag);

打印出来的结果

发现在找到节点后,树还在遍历,而且返回值是 undefined。

百度思考后找到了方法,就是需要判断递归后的返回结果

function deepTree(treeList, name) {for (let index = 0; index < treeList.length; index++) {const element = treeList[index];if (element.name == name) {console.log("查询到了该节点");return true;}console.log("遍历树");if (element.children && element.children.length) {if (deepTree(element.children, name)) {return true;}}}
}const name = "b-2";
const flag = deepTree(treeList, name);
console.log("遍历树找到的结果", flag);

输出结果

找到节点后就不会在遍历,并且返回也是 true

递归找到节点后跳出递归循环相关推荐

  1. java 跳出递归_java中途强制跳出递归

    请珍惜小编劳动成果,该文章为小编原创,转载请注明出处. 有些时候我们需要在中途强制跳出递归,而且还是需要一步跳出,而不一层一层的跳出,这时,我们可以采用抛异常的方法来实现. class Test { ...

  2. 如何跳出forEach循环

    介绍 相信所有的前端小伙伴对 forEach() 方法并不陌生,它实现了对数组的每个元素执行一次给定的函数.可在使用中,经常希望跟 for 一样,在循环过程中,某个判断成立后跳出这个循环.本期我们就将 ...

  3. java跳出递归_在Java项目中如何跳出递归循环

    在Java项目中如何跳出递归循环 发布时间:2020-11-25 17:16:07 来源:亿速云 阅读:114 作者:Leah 今天就跟大家聊聊有关在Java项目中如何跳出递归循环,可能很多人都不太了 ...

  4. pythonbreak可以跳出递归吗_怎样强制退出递归函数

    错误方法:用"return值"退出循环. 由于递归的调用是层层嵌套的,所以用return返回时需要一层一层逐级向上返回.换句话说,在return之后,只能确保截断当前层的循环,不能 ...

  5. 二叉树的前中后序递归和非递归遍历操作【代码】

    "遍历"是二叉树各种操作的基础,可以在遍历过程中对节点进行各种操作,如:求节点的双亲,求节点的孩子,判断节点的层次.当然,还有一些更重要的操作,例如,依据遍历序列建立二叉树,对建立 ...

  6. 二叉树的先中后序递归和非递归遍历(数据结构作业)

    一.设计思想 我创建二叉树是用的先序创建,其中用'#'代表空节点. 1.递归先序遍历 (1)如果当前节点为空节点(用'#'代表空节点),结束当前函数 (2)打印当前节点 (2)递归当前节点的左子树 ( ...

  7. Tree Recovery(二叉树递归遍历+求后序遍历模板)

    题意:已知先序和中序,将后序求出来 Little Valentine liked playing with binary trees very much. Her favorite game was ...

  8. 二叉树先中后序递归遍历与非递归遍历、层次遍历

    文章目录 1 先序遍历 1.1 先序遍历递归 1.2 先序遍历非递归 2 中序遍历 2.1 中序遍历递归 2.2 中序遍历非递归 3 后序遍历 3.1 后序遍历递归 3.2 后序遍历非递归 4 层序遍 ...

  9. 二叉树先、中、后遍历递归+非递归

    文章目录 前言 思路 设计思想 非递归前序遍历的思路 非递归中序遍历的思路 非递归后序遍历的思路 层序遍历的思路 完整代码 MyBinaryTree.h MyBinaryTree.cpp Main.c ...

最新文章

  1. seg显示时间——51程序
  2. 即构科技:解决行业痛点,以MSDN为基础构建全球实时音视频通信云
  3. CSS3酷炫样式集合
  4. 两个时间点距离 time_t c_天津二建公路考试时间
  5. c语言射击类小游戏任务书,(c语言课程设计报告小游戏“石头剪子布”.doc
  6. 使用新操作码在比特币现金上进行首次原子竞猜
  7. android平板安装win10,如何给平板电脑装win10系统?
  8. vc red.msi matlab,vc red.msi x64+x32位版下载
  9. [OT]ubuntu下安装HP-P1108打印机驱动
  10. wso2 mysql_WSO2 DAS使用mysql集群APIM
  11. 向量叉乘公式_向量外积的高中数学运用
  12. 笔试题之——栈问题(列车车厢编组问题)
  13. html 绘制矩形,HTML5中使用canvas绘制矩形
  14. 在线制作动态显示折线图
  15. ABC247ABCD
  16. Geek05 学习记录
  17. 《我喜欢你》:大叔与萝莉的爱情
  18. 大佬评清华Jittor,这是怎样一个深度学习框架?
  19. 什么是蓝光危害?62471认证测试项目
  20. Java函数调用重试的正确姿势

热门文章

  1. 51单片机 Proteus仿真 数码管 万年历 电子时钟 阴历阳历 星期 DS1302 修改时间
  2. 【开源电机驱动】H 桥驱动-软件篇
  3. 【期末复习】2021-20222南邮网络安全技术复习题
  4. 考研院校选择的一些看法
  5. 华为鸿蒙新机2k曲面屏,华为5G新旗舰已确认,双曲面屏+升级到鸿蒙2.0,价格很感人...
  6. 基础的图书馆管理系统
  7. MySQL----mysql_secure_installation 安全配置向导
  8. OA厂商在行业市场中如何“长生”?
  9. 数字化时代-11:从马斯洛需求层次看未来选择做什么样的产品
  10. 如何清除博客中广告内容