from numpy.typing import ArrayLike

from ...classes.graph import Graph
from ...utils.decorators import not_implemented_for

__all__ = ["rooted_tree_isomorphism", "tree_isomorphism"]

def root_trees(t1, root1, t2, root2): ...

# figure out the level of each node, with 0 at root
def assign_levels(G: Graph, root): ...

# now group the nodes at each level
def group_by_levels(levels): ...

# now lets get the isomorphism by walking the ordered_children
def generate_isomorphism(v, w, M, ordered_children): ...
def rooted_tree_isomorphism(t1, root1, t2, root2) -> ArrayLike: ...
def tree_isomorphism(t1, t2) -> ArrayLike: ...
