前端笔试中两道与节点有关的算法题
1.分别用广度优先遍历和深度优先遍历展开下面节点
- 示例
var tree = {name: 'root',children: [{name: 'child1',children: [{name: 'child1_1',children: []}, { name: 'child1_2', children: [] }]}, {name: 'child2',children: [{name: 'child2_1',children: []}]}, {name: 'child3',children: [{name: 'child2_1',children: []}]}]
};
复制代码
广度优先遍历:
function wideTraversal(node) {var nodes = [];if (node != null) {var queue = [];queue.unshift(node);while (queue.length != 0) {var item = queue.shift();nodes.push(item.name);var children = item.children;for (var i = 0; i < children.length; i++) {queue.push(children[i]);}}}return nodes;
}
console.log(wideTraversal(tree))
复制代码
输出结果:
[ 'root','child1','child2','child3','child1_1','child1_2','child2_1','child2_1' ]
深度优先遍历:
function traverseTree(node) {var child = node.children,arr = [];arr.push(node.name);if (child) {child.forEach(function(node) {arr = arr.concat(traverseTree(node));});}return arr;
}
console.log(traverseTree(tree))
复制代码
输出结果:
[ 'root','child1','child1_1','child1_2','child2','child2_1','child3','child2_1' ]
2.关系型数组转换成树形结构对象
类似:
var data = [{ parentId: 0, id: 1, value: '1' },{ parentId: 3, id: 2, value: '2' },{ parentId: 0, id: 3, value: '3' },{ parentId: 1, id: 4, value: '4' },{ parentId: 1, id: 5, value: '5' }
]
复制代码
期望输出:
[
{id:1,value:'1',
children:[{id:4,value:'4',children:[]},
{id:5,value:'5',children:[]}]},
{id:3,value:'3',
children:[id:2,value:'2',children:[]]}]
复制代码
代码:
var getJsonTree = function(data, parentId) {var itemArr = [];for (var i = 0; i < data.length; i++) {var node = data[i];//data.splice(i, 1)if (node.parentId == parentId) {var newNode = { id: node.id, value: node.value, children: getJsonTree(data, node.id) };itemArr.push(newNode);}}return itemArr;
}
console.log(getJsonTree(data, 0))
复制代码
转载于:https://juejin.im/post/5c890e0af265da2de661477b
前端笔试中两道与节点有关的算法题相关推荐
- 求杨辉三角的前n行数据_两道简单的套公式算法题:杨辉三角
杨辉三角应该是大家很早就接触到的一个数学知识,它有很多有趣的性质: 每个数字等于上一行的左右两个数字之和,即 C(n+1,i) = C(n,i) + C(n,i-1) 每行数字左右对称,由 1 开始逐 ...
- 装饰器python的通俗理解_2道极好的Python算法题 | 带你透彻理解装饰器的妙用
今天我分享两道非常好的算法题,大家耐心看完两道算法题之后,注意精华在最后,我相信大家对装饰器的理解又会更上一层楼. 1.斐波那契数列 1).这个序列非常有名,我非常喜欢这个序列(有同学问我为啥,偷偷告 ...
- 两个数组合并排序python_python算法题---合并两个有序数组
leetcode-python-合并两个有序数组 今天第一次电话面试,有点紧张,所以自己感觉表现的不是很好,面试过程中面试官问到了两个算法题,都是leecode上面的题目,而且我都做过,但是当时一下子 ...
- 程序员的数学课22 面试中那些坑了无数人的算法题
前面的课时,我们学习了"代数与统计""算法与数据结构",至今这门课程的主体知识已告一段落,下面我们进入彩蛋环节,我会向你介绍两个应用到数学的场景,第一个是求职面 ...
- js date转成 时间字符串_秋招快要开始了,前端笔试中的坑位-JS隐式转换问题
我们在写笔试题的时候,经常碰到涉及隐式转换的题目,例如 "1" + 2 obj + 1 [] == ![] [null] == false === 和 == === 叫做严格运算符 ...
- 两道有点难的回溯利口题996_37
996. Number of Squareful Arrays 给一个不含负数的整数数组,问有多少种排列组合使数组可开方的.一个数组是可开方的意思是数组中每两个相邻数之和都是可开方的. Input: ...
- mopso算法代码程序_JAVA程序员的必杀技,面试中常考的8个经典算法题,过程精妙,代码精炼...
总有一些题,超越了岁月,即便是经过了新框架的层层迭代,它依然散发着令人回味无穷的味道.下面的几个笔试题目,是JAVA面试中经常遇见的,大家一定要牢记于心,可别复习到了到时候又说不出来.我就吃过这种亏, ...
- 30道面试常见的数据结构算法题
注意: 边界条件的判断 取地址符传参的使用 溢出问题,long long 题目来源:https://github.com/ZXZxin/ZXBlog/blob/master/%E5%88%B7%E9% ...
- 美图笔试算法题(两个人拿石头判断输赢)
刚做完美图的笔试,两道编程题,第一道比较简单:找出一串用逗号隔开的字符串中不重复的那个数. 以下是第二道,时间有限,很多地方没来得及优化,整体逻辑应该没错. question: You are pla ...
- 二叉树寻找祖先C语言,微软算法面试题:给定两个二叉树节点,寻找其最近共同祖先...
给定一颗二叉树,并指定二叉树中任意两个节点,要求找出这两个节点在二叉树中的最近祖先,假定二叉树每个节点都有一个指向其父节点的指针,图中没有画出来,要求算法的空间复杂度必须是O(1), 时间复杂度为O( ...
最新文章
- 程序员必知8大排序3大查找(三)
- mysqldump 忽略视图_mysqldump的使用--解决不能导出视图的问题
- vue-自定义过滤器--时间
- redhat7.4启动telnet和SSH服务,修改IP地址
- [翻译] Entity Framework Core in Action 关于这本书
- python中函数分为哪四类_Python函数参数分类原理详解
- Diino - 具有自动数据备份功能的国外2G免费网络硬盘
- c语言做简单的水果店程序,怎么开发一款生鲜水果小程序?水果店+小程序该如何组合运营?...
- webpack系列-优化
- 京瓷1125打印机清零_怎么设置京瓷1125MFP打印机ip地址
- 大学英语综合教程四 Unit 7 课文内容英译中 中英翻译
- python 开放端口探测工具
- python 将一串数字形式的时间转换为标准时间格式
- 合并石子(三种方法)
- 医疗数据安全 | 健康医疗数据安全服务体系建设思考
- 巡逻机器人(Patrol Robot, Uva1600)
- 腾云忆想构建云化IT生态,助力我国“双循环经济”数字化升级
- python控制程控电源_程控开关稳压电源的控制方式对比
- html单元格上下拆分代码,在HTML / CSS中如何垂直拆分表格单元格(特殊版本)
- 硬货-如何用风控拯救下架的小红书
热门文章
- 【幅度调制】基于matlab GUI语音幅度调制【含Matlab源码 292期】
- icons在java显示出来_java – 制作jfilechooser显示图像缩略图
- mysql 修改字段为主键自增_「MySQL整理」 MySQL语法,如何操作数据表
- python3小程序代码_我想使用python写一个小程序作为练习,使用的是python3。
- html position属性作用,position(五种属性,以及每个属性的特点)
- 选择mysql开发的原因_MySQL开发技巧
- 怎么判断前轮左右的位置_老司机教你如何用方向盘,判断左右车轮位置,新手司机一看就会!...
- 编辑请求内容 Charles
- 【编译打包】nginx-1.4.7-1.el6.lite.src.rpm
- 聊天机器人5步重塑酒店业