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;
}
