int findFather(int x) {//查找根结点并进行路径压缩 /*if (father[x] == x) return x; int temp = findFather(father[x]); father[x] = temp; return temp;*/ return x == father[x] ? father[x] : findFather(father[x]); }
以上代码是用于最小生成树中的路径压缩问题,注释部分和下面的三目运算符是两种求解方式,运行结果如下:
编译原理:三目运算符在汇编的时候多了将等号右边的运算结果保存到中间变量的过程,最终耗时比注释部分看似更长的代码长