路径压缩 递归 与非递归版本

来源:互联网 发布:sql增加数据 编辑:程序博客网 时间:2024/05/19 19:43

递归版本:


int find_set(int x)// 找到根节点 {if(parent[x] == x)return x;return parent[x] = find_set(parent[x]);// 路径压缩提高查找效率 }

非递归版本:

int find_set(int x){int k, r, j;r = x;while(r != parent[r]){ // 找到根节点 r = parent[r];}k = x; //从要找的节点开始 非递归压缩 while(k != r){j = parent[k]; //记录当前结点的parent[k] 向上 推进  parent[k] = r;k = j;}return r;}