js 遞歸獲取子節點全部父節點,深度遍歷獲取第一個子樹

前端需求。javascript

  • 遞歸
  • 深度優先遍歷算法
// 查找一個節點的全部父節點
 familyTree (arr1, id) {
      var temp = []
      var forFn = function (arr, id) {
        for (var i = 0; i < arr.length; i++) {
          var item = arr[i]
          if (item.id === id) {
            temp.push(item)
            forFn(arr1, item.pid)
            break
          } else {
            if (item.children) {
              forFn(item.children, id)
            }
          }
        }
      }
      forFn(arr1, id)
      return temp
    },
    // 查找一個樹多有第一個節點,深度遍歷
    getFirstNode (tree) {
      var temp = []
      var forFn = function (arr) {
        if (arr && arr.length > 0) {
          temp.push(arr[0])
          if (arr[0].children) {
            forFn(arr[0].children)
          }
        }
      }
      forFn(tree)
      return temp
    }

在這裏插入圖片描述

相關文章
相關標籤/搜索