vue2-mind-map
Version:
`vue2-mind-map` 是一个功能丰富的思维导图可视化组件。该组件提供了完整的思维导图展示和交互功能,支持多种数据格式输入、灵活的布局配置、丰富的样式定制和流畅的用户交互体验。目前基于 Vue 2 构建。
113 lines (112 loc) • 4.32 kB
TypeScript
/**
* 树遍历过程中的控制选项
*/
export interface TraverseOptions {
/** 遍历顺序:'pre' 前序遍历(默认),'post' 后序遍历 */
order?: 'pre' | 'post';
/** 最大遍历深度,-1 表示无限制 */
maxDepth?: number;
/** 是否在回调返回 false 时停止遍历该分支(此选项仅在前序遍历中有效) */
stopOnFalse?: boolean;
}
/**
* 递归遍历树节点,并对每个节点执行回调函数 (前序遍历)
*
* @remarks
* 前序遍历(pre-order)的顺序是:父节点 -> 子节点。
* 例如,对于以下树结构:
* ```
* A
* / \
* B C
* / \ \
*D E F
* ```
* 遍历顺序将是:A -> B -> D -> E -> C -> F。
*
* @template T 节点类型,必须包含 children 属性
* @param node 当前遍历到的节点
* @param callback 对每个节点执行的回调函数,接收当前节点和其父节点作为参数
* @param parentNode 当前节点的父节点 (在递归调用中传递)
*/
export declare function traverseTreeRecursive<T extends {
children?: T[];
}>(node: T, callback: (node: T, parentNode: T | null) => void, parentNode?: T | null): void;
/**
* 增强版递归遍历树节点 (深度优先),支持前序和后序遍历、深度限制和条件中断
*
* @remarks
* 深度优先遍历包括前序和后序两种模式:
* - **前序遍历 (pre-order)**: 父 -> 子。处理顺序: A -> B -> D -> E -> C -> F。适合自上而下的处理
* - **后序遍历 (post-order)**: 子 -> 父。处理顺序: D -> E -> B -> F -> C -> A。适合自下而上的处理(如删除操作)
*
* 对于以下树结构:
* ```
* A
* / \
* B C
* / \ \
*D E F
* ```
*
* @template T 节点类型,必须包含 children 属性
* @param node 当前遍历到的节点
* @param callback 对每个节点执行的回调函数。在前序遍历中,若返回 `false`,则会停止对当前分支的进一步遍历
* @param options 遍历选项,用于控制遍历行为
* @param parentNode 当前节点的父节点 (在递归调用中传递)
* @param currentDepth 当前遍历深度 (在递归调用中传递)
*
* @example <caption>深度限制</caption>
* // 只遍历到深度为 1 的节点 (根节点深度为 0)
* traverseTreeRecursiveAdvanced(root, (node, parent, depth) => {
* console.log(`层级 ${depth}: ${node.name}`);
* }, { maxDepth: 1 });
* // 输出:
* // 层级 0: 根节点
* // 层级 1: 子节点1
* // 层级 1: 子节点2
*
* @example <caption>条件停止遍历 (仅前序)</caption>
* // 当遇到 isHidden 为 true 的节点时,停止遍历其所在的分支
* traverseTreeRecursiveAdvanced(root, (node) => {
* if (node.isHidden) {
* return false; // 停止遍历这个分支
* }
* console.log(node.name);
* }, { order: 'pre', stopOnFalse: true });
*/
export declare function traverseTreeRecursiveAdvanced<T extends {
children?: T[];
}>(node: T, callback: (node: T, parentNode: T | null, depth: number) => boolean | void, options?: TraverseOptions, parentNode?: T | null, currentDepth?: number): void;
/**
* 广度优先遍历 (BFS) 树节点
*
* @remarks
* 广度优先遍历会按层级逐层访问节点。它非常适合用于查找最短路径或离根节点最近的满足条件的节点。
* 对于以下树结构:
* ```
* A
* / \
* B C
* / \ \
*D E F
* ```
* 遍历顺序将是:A -> B -> C -> D -> E -> F。
*
* @template T 节点类型,必须包含 children 属性
* @param root 根节点
* @param callback 对每个节点执行的回调函数,接收当前节点和其层级。如果返回 `false`,将立即停止整个遍历
*/
export declare function traverseTreeBFS<T extends {
children?: T[];
}>(root: T, callback: (node: T, level: number) => boolean | void): void;
/**
* 在树中查找第一个满足条件的节点 (深度优先)
* @template T 节点类型
* @param root 根节点
* @param predicate 查找条件,返回 true 表示找到
* @returns 找到的节点或 null
*/
export declare function findNodeInTree<T extends {
children?: T[];
}>(root: T, predicate: (node: T) => boolean): T | null;