输出从根节点到目标节点的链路

需求中要求找到一颗树中从根节点到目标节点的链路,并打印:
 
思路:使用递归方式输出,递归退出条件是找到目标节点,
递归退出时,拼接字符串,然后返回值为true,
如果递归调用的返回值为true,说明是这条链路,应该继续拼接字符串
如果不满足的情况时应该返回false
 
 
 
let ResultArr  =[]
 
findParentFolder(arr, targetId) {
 
    for (let i = 0; i < arr.length; i += 1) {
 
       if (arr[i].id === targetId) {
          ResultArr.push(arr[i].name || '-');
          return true;
       }
  
      if (arr[i].children && arr[i].children.length) {
          const r = this.findParentFolder(arr[i].children, targetId);
          if (r === true) {
               ResultArr.push(arr[i].name || '-');
               return true;
              }
          }
       }
 
     return false;
}
 
 
ResultArr.reverse().joint('/')
posted @ 2020-07-09 10:14  hh9515  阅读(188)  评论(0)    收藏  举报