树形数据根据末节点值回溯根节点标签拼接
给定一个树形数据,如何根据末级节点值组装末级到根节点的信息?比如,根据值 1-2 返回拼接的自身和父级的标签值:节点 1/节点 1-2。
递归实现
由于末节点到根节点的关系并不明显,因此无法直接从叶子节点向上回溯。一种解决办法是使用递归。
function tracetoroot(treedata, value) { for (let i = 0; i < treedata.length; i++) { const node = treedata[i]; if (node.value === value) { if (node.parent) { return tracetoroot(treedata, node.parent.value) + '/' + node.label; } else { return node.label; } } } }
示例
使用给出的 treedata 数据:
const treeData = [...]; const result = traceToRoot(treeData, '1-2'); console.log(result); // 输出 "节点 1/节点 1-2"
时间复杂度
递归算法的时间复杂度为 o(n),其中 n 是树形数据的节点数量。