export interface TreeNode { id: number; parentId: number | null; title: string; children?: TreeNode[]; } export function getTopMenuFragment(tree: TreeNode[], targetId: number): TreeNode | null { // 辅助递归函数:查找目标节点并返回其顶层父菜单的完整树结构 function findTopMenu(node: TreeNode): TreeNode | null { // 检查当前节点是否为目标节点 if (node.id === targetId) { return node; // 找到目标节点,返回当前节点 } // 如果当前节点有子节点,递归查找 if (node.children) { for (let i = 0; i < node.children.length; i++) { const child = node.children[i]; const result = findTopMenu(child); // 递归查找子节点 if (result) { // 如果在子节点中找到目标节点,返回当前节点的完整树结构 return node; } } } // 如果当前节点及其子节点中都没有找到目标节点,返回 null return null; } // 遍历顶层节点,查找目标节点的顶层父菜单 for (const root of tree) { const result = findTopMenu(root); if (result) { return result; // 返回顶层父菜单的完整树结构 } } // 如果整个树中都没有找到目标节点,返回 null return null; }