hutool.core.tree

Module Contents

Classes

TreeNode

树节点

TreeUtil

树工具类

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 实例