package com.njzscloud.common.core.tree;


import java.util.List;

/**
 * 树结点
 *
 * @param <T> Id 的数据类型
 */
public interface TreeNode<T> extends Comparable<TreeNode<T>> {
    /**
     * 节点 ID
     *
     * @return T id
     */
    T getId();

    /**
     * 节点 上级 ID
     *
     * @return T pid
     */
    T getPid();

    /**
     * 排序
     *
     * @return int
     */
    int getSort();

    /**
     * 子节点
     *
     * @return List&lt;? extends TreeNode&lt;T&gt;&gt;
     */
    List<? extends TreeNode<T>> getChildren();

    /**
     * 设置子节点
     *
     * @param children 子节点
     */
    void setChildren(List<? extends TreeNode<T>> children);

    @Override
    default int compareTo(TreeNode<T> o) {
        return this.getSort() - o.getSort();
    }
}
