const data = [{ id: 1, children: [{ id: 2, children: [{ id: 3, }, { id: 4, }], }], }, { id: 5, children: [{ id: 6, }], }]; let nodes = []; function getParentNodes(id, tree) { _getParentNodes([], id, tree); return nodes; } function _getParentNodes(his, targetId, tree) { tree.some((list) => { const children = list.children || []; if (list.id === targetId) { nodes = his; return true; } else if (children.length > 0) { const history = [...his]; history.push(list); return _getParentNodes(history, targetId, children); } }) }
要找到一颗树中指定id的那个节点很简单。如果要找到指定的所有父节点,转换一下思路就是将深度遍历的每条顺序都记录下来,直到找到了指定id的节点时,输出该条记录。
那么仅仅需要在每次遍历时,将上一次的记录传过去即可。
原文地址:https://www.cnblogs.com/youyouluo/p/11546462.html
时间: 2024-11-05 22:44:02