nht_cntt

searchTree js

Nov 23rd, 2021
1,188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. root = {"id":27,"name":"2000 Years","deleted":false,"children":[{"id":28,"name":"1111","parentElementId":27,"deleted":false,"children":[{"id":143,"name":"2010","parentElementId":28,"deleted":false,"children":[{"id":149,"name":"111111","parentElementId":143,"deleted":false,"children":[{"id":150,"name":"22222","parentElementId":149,"deleted":false}]}]},{"id":147,"name":"2011","parentElementId":28,"deleted":false,"children":[{"id":152,"name":"dfdf","parentElementId":147,"deleted":false}]},{"id":148,"name":"2012","parentElementId":28,"deleted":false}]},{"id":146,"name":"22","parentElementId":27,"deleted":false,"children":[{"id":151,"name":"3333","parentElementId":146,"deleted":false}]}]};
  2.  
  3. function searchTree(element, node_id){
  4.   let stack = [];
  5.   stack.push({node: element, track: []});
  6.   while (stack.length > 0) {
  7.       let {node, track} = stack.pop();
  8.       if (node.id === node_id) {
  9.           return [...track, node_id];
  10.       } else if (node.children && node.children.length) {
  11.             let new_track = [...track, node.id];
  12.           for (let node_children of node.children) {
  13.               stack.push({node: node_children, track: new_track});
  14.           }
  15.       }
  16.   }
  17.   return null;
  18. }
  19. console.log(searchTree(root, 150));
Advertisement
Add Comment
Please, Sign In to add comment