49 lines · 1.1 KB · C
RawDownload
// SPDX-License-Identifier: GPL-2.0#include <linux/union_find.h> /** * uf_find - Find the root of a node and perform path compression * @node: the node to find the root of * * This function returns the root of the node by following the parent * pointers. It also performs path compression, making the tree shallower. * * Returns the root node of the set containing node. */struct uf_node *uf_find(struct uf_node *node){	struct uf_node *parent; 	while (node->parent != node) {		parent = node->parent;		node->parent = parent->parent;		node = parent;	}	return node;} /** * uf_union - Merge two sets, using union by rank * @node1: the first node * @node2: the second node * * This function merges the sets containing node1 and node2, by comparing * the ranks to keep the tree balanced. */void uf_union(struct uf_node *node1, struct uf_node *node2){	struct uf_node *root1 = uf_find(node1);	struct uf_node *root2 = uf_find(node2); 	if (root1 == root2)		return; 	if (root1->rank < root2->rank) {		root1->parent = root2;	} else if (root1->rank > root2->rank) {		root2->parent = root1;	} else {		root2->parent = root1;		root1->rank++;	}}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t