Comments (4)
const json = {
id: 1,
children: [
{ id: 2, children: [{ id: 3, children: [] }] },
{
id: 4,
children: [
{ id: 5, children: [] },
{ id: 6, children: [] },
],
},
{ id: 7, children: [] },
],
};
console.log(findNode(json, 5)); // 1->4->5
/**
* 每个节点id唯一,输出路径
* @param {*} json
* @param {*} target
*/
function findNode(json, target) {
function dfs(node, target, arr) {
if(!node) return;
arr.push(node.id);
if(node.id === target && !bool) {
res.push(...arr);
bool = true;
return;
}
try {
node.children && node.children.forEach(child => {
if(bool) throw new Error("IS FOUND");
dfs(child, target, arr);
arr.pop();
})
} catch(e) {
return;
}
}
const res = [];
let bool = false;
dfs(json, target, []);
return res.join('->');
}
from js-challenges.
function findNode(id, node = json) {
if (node.id === id) {
return node.id.toString();
}
if (node.children.length === 0) {
return null;
}
for (let i = 0; i < node.children.length; i++) {
const result = findNode(id, node.children[i]);
if (result !== null) {
return node.id.toString() + "->" + result;
}
}
return null;
}
from js-challenges.
function findNode(tree, targetId) {
let path = [],
res = []
traversal(tree)
return res.join('->')
function traversal(node) { // The parameter 'node' is an object
if (!node) return
path.push(node.id)
if (node.id === targetId) {
res.push(...path)
path.pop()
return
}
node.children && node.children.forEach(item => {
traversal(item)
})
path.pop()
}
}
console.log(findNode(tree, 5)) // 1->4->5
from js-challenges.
function findNode(obj) {
const track = [];
let res = [];
function dfs(obj, target) {
if(!obj) {
return;
}
if(obj.id === target) {
track.push(obj.id);
res = [...track];
return;
}
track.push(obj.id);
obj.children.forEach(item => {
dfs(item, target);
})
track.pop();
}
dfs(obj, 5)
return res;
}
from js-challenges.
Related Issues (20)
- 正则表达式匹配URL HOT 1
- repeat
- add
- CamelCase
- 洗牌算法 HOT 1
- 工厂模式
- 代理模式 HOT 1
- 装饰器模式 HOT 1
- 手写new关键字 HOT 1
- 实现有序数组生成平衡二叉搜索树,ACM模式(2023美团暑期实习一面手撕)
- 版本号排序(2023美团暑期实习一面) HOT 2
- 将html字符串转为树状结构
- 对象去重 HOT 2
- 【开源自荐】推荐一个每日更新的前端面试题库
- bind
- 我的解决方案
- 【开源自荐】SolidUI 一句话生成任何图形
- 百度2023秋招:把数组排成最小的数 HOT 5
- 实现简易版的useState HOT 1
- 手写Instanceof详细 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from js-challenges.