/** * 树遍历过程中的控制选项 */ 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(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 深度限制 * // 只遍历到深度为 1 的节点 (根节点深度为 0) * traverseTreeRecursiveAdvanced(root, (node, parent, depth) => { * console.log(`层级 ${depth}: ${node.name}`); * }, { maxDepth: 1 }); * // 输出: * // 层级 0: 根节点 * // 层级 1: 子节点1 * // 层级 1: 子节点2 * * @example 条件停止遍历 (仅前序) * // 当遇到 isHidden 为 true 的节点时,停止遍历其所在的分支 * traverseTreeRecursiveAdvanced(root, (node) => { * if (node.isHidden) { * return false; // 停止遍历这个分支 * } * console.log(node.name); * }, { order: 'pre', stopOnFalse: true }); */ export declare function traverseTreeRecursiveAdvanced(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(root: T, callback: (node: T, level: number) => boolean | void): void; /** * 在树中查找第一个满足条件的节点 (深度优先) * @template T 节点类型 * @param root 根节点 * @param predicate 查找条件,返回 true 表示找到 * @returns 找到的节点或 null */ export declare function findNodeInTree(root: T, predicate: (node: T) => boolean): T | null;