如何比较树状结构所有下级是否相同?

比如我要用一个name字段 比较树状结构里面的所有name字段 包括所有children 看有没有相同的 不知道树状结构里面有多少级 怎么比较, 并且如果过滤掉自己


回答:

用递归你可以看看这个例子:

const tree = {

name: "A",

children: [

{

name: "B",

children: [

{ name: "D" },

{ name: "E" },

],

},

{ name: "C" },

],

};

function hasDuplicateName(tree, parentNode = null) {

const nameSet = new Set();

function traverse(node) {

if (parentNode && node === parentNode) return false;

if (nameSet.has(node.name)) {

return true;

}

nameSet.add(node.name);

if (node.children) {

for (const child of node.children) {

if (traverse(child)) {

return true;

}

}

}

return false;

}

return traverse(tree);

}

console.log(hasDuplicateName(tree)); // 输出 false

// 加一个重复的名字

tree.children[1].children = [{ name: "B" }];

console.log(hasDuplicateName(tree)); // 输出 true

以上是 如何比较树状结构所有下级是否相同? 的全部内容, 来源链接: utcz.com/p/934197.html

回到顶部