hutool.core.tree¶
Module Contents¶
Classes¶
API¶
- class hutool.core.tree.TreeNode(id: Any = None, parent_id: Any = None, name: str = '', weight: int = 0)¶
树节点
用于表示树结构中的单个节点,包含节点标识、父节点标识、 名称、权重、子节点列表以及扩展属性。
Initialization
初始化树节点
- 参数:
id – 节点唯一标识
parent_id – 父节点标识,根节点通常为 None 或特定根标识
name – 节点名称
weight – 节点权重,用于排序
- __repr__() str¶
- to_dict(id_field: str = 'id', parent_field: str = 'parentId', children_field: str = 'children', name_field: str = 'name', weight_field: str = 'weight') dict¶
将节点及其子树转为字典
- 返回:
包含节点信息和子节点列表的字典
- class hutool.core.tree.TreeUtil¶
树工具类
提供从平铺列表构建树、遍历、查找、统计等常用操作。
- static build(list_data: List[dict], root_id: Any = None, id_field: str = 'id', parent_field: str = 'parentId', children_field: str = 'children', name_field: str = 'name', weight_field: str = 'weight') List[hutool.core.tree.TreeNode]¶
从平铺列表构建树
将包含 id 和 parentId 的平铺字典列表转换为树形结构。
- 参数:
list_data – 平铺的字典列表
root_id – 根节点的 parent_id 值,默认为 None
id_field – 节点ID字段名,默认 “id”
parent_field – 父节点ID字段名,默认 “parentId”
children_field – 子节点列表字段名,默认 “children”
name_field – 节点名称字段名,默认 “name”
weight_field – 权重字段名,默认 “weight”
- 返回:
根节点列表(可能有多个顶级节点)
- static get_node_id(tree_nodes: List[hutool.core.tree.TreeNode], node_id: Any) Optional[hutool.core.tree.TreeNode]¶
根据ID查找节点
- 参数:
tree_nodes – 树节点列表
node_id – 要查找的节点ID
- 返回:
匹配的节点,未找到返回 None
- static to_list(tree_nodes: List[hutool.core.tree.TreeNode]) List[dict]¶
树转平铺列表
将树形结构展平为字典列表,广度优先遍历。
- 参数:
tree_nodes – 根节点列表
- 返回:
平铺的字典列表
- static foreach(tree_nodes: List[hutool.core.tree.TreeNode], consumer: Callable[[hutool.core.tree.TreeNode], None]) None¶
广度优先遍历(BFS)
对树中每个节点执行 consumer 回调。
- 参数:
tree_nodes – 根节点列表
consumer – 遍历回调函数
- static foreach_df(tree_nodes: List[hutool.core.tree.TreeNode], consumer: Callable[[hutool.core.tree.TreeNode], None]) None¶
深度优先遍历(DFS)
对树中每个节点执行 consumer 回调,使用栈实现非递归遍历。
- 参数:
tree_nodes – 根节点列表
consumer – 遍历回调函数
- static to_map(tree_nodes: List[hutool.core.tree.TreeNode]) Dict[Any, hutool.core.tree.TreeNode]¶
树转ID到节点的映射
- 参数:
tree_nodes – 根节点列表
- 返回:
以节点ID为键、节点对象为值的字典
- static count(tree_nodes: List[hutool.core.tree.TreeNode]) int¶
统计节点总数
- 参数:
tree_nodes – 根节点列表
- 返回:
树中所有节点的数量
- static get_leaf_nodes(tree_nodes: List[hutool.core.tree.TreeNode]) List[hutool.core.tree.TreeNode]¶
获取所有叶子节点
叶子节点是指没有子节点的节点。
- 参数:
tree_nodes – 根节点列表
- 返回:
叶子节点列表
- static build_single(list_data: List[dict], root_id: Any = None, id_field: str = 'id', parent_field: str = 'parentId') Optional[hutool.core.tree.TreeNode]¶
从平铺列表构建单根树,返回唯一的根节点。
- 参数:
list_data – 平铺的字典列表
root_id – 根节点的 parent_id 值
id_field – 节点 ID 字段名
parent_field – 父节点 ID 字段名
- 返回:
根节点,如果没有节点则返回 None
- 抛出:
ValueError – 存在多个根节点时
- static get_parents_name(tree_nodes: List[hutool.core.tree.TreeNode], node_id: Any, separator: str = '/') str¶
获取指定节点的完整路径名称。
从根节点到目标节点的名称用 separator 连接。
- 参数:
tree_nodes – 根节点列表
node_id – 目标节点 ID
separator – 路径分隔符,默认
"/"
- 返回:
完整路径名称,如
"根/父/子"
- static get_parents_id(tree_nodes: List[hutool.core.tree.TreeNode], node_id: Any) list¶
获取指定节点的所有祖先节点 ID(从根到当前节点)。
- 参数:
tree_nodes – 根节点列表
node_id – 目标节点 ID
- 返回:
祖先 ID 列表
- static create_empty_node(node_id: Any, name: str = '', parent_id: Any = None) hutool.core.tree.TreeNode¶
创建一个空的树节点。
- 参数:
node_id – 节点 ID
name – 节点名称
parent_id – 父节点 ID
- 返回:
新的 TreeNode 实例