/**
 * 树遍历过程中的控制选项
 */
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;
