Git Product home page Git Product logo

Comments (4)

zzyyhh22lx avatar zzyyhh22lx commented on August 15, 2024
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.

kangkang123269 avatar kangkang123269 commented on August 15, 2024
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.

lesenelir avatar lesenelir commented on August 15, 2024
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.

lemon-yogurt avatar lemon-yogurt commented on August 15, 2024
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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.