海mia婊婊想上岸

导航

多叉树的遍历和查找

在key为NodeId的结点的子树中查找一个key为inNodeId的结点

// 传入对象而不是数组
getIsMyChild(rootNode, inNodeId, NodeId) {
  if (null == rootNode) return null;
  if (rootNode.key == NodeId) {
    // 找到该结点后将其所有后代存到itsChildren数组
    // 返回“inNodeId是否在NodeId的后代里”
    return (this.getChildrenOfTree(rootNode, []).indexOf(inNodeId) >= 0);
  } else {
    //没有孩子就结束并返回父节点
    if (rootNode.children.length <= 0) return null;
    // 有孩子就遍历孩子
    for (let i = 0; i < rootNode.children.length; i++) {
      return this.getIsMyChild(rootNode.children[i], inNodeId, NodeId);
    }
  }
},

 

遍历该树并把孩子都放进一个数组里

getChildrenOfTree(rootNode, arr) {
  let itsChild = rootNode.children;
  // rootNode没有孩子就结束并返回父节点
  if (itsChild.length <= 0) return;
  // 有孩子就遍历孩子
  for (let i = 0; i < itsChild.length; i++) {
    // 把孩子放进数组
    arr.push(itsChild[i].key);//中左右
    this.getChildrenOfTree(itsChild[i], arr);
  }
},

 

 

posted on 2021-09-24 17:56  海mia婊婊想上岸  阅读(274)  评论(0编辑  收藏  举报