# Find the node whose xor with x gives minimum value

Given a tree, and the weights of all the nodes and an integer **x**, the task is to find a node **i** such that **weight[i] xor x** is minimum.

**Examples:**

Input:

x = 15

Output:3

Node 1: 5 xor 15 = 10

Node 2: 10 xor 15 = 5

Node 3: 11 xor 15 = 4

Node 4: 8 xor 15 = 7

Node 5: 6 xor 15 = 9

**Approach:** Perform dfs on the tree and keep track of the node whose weighted xor with **x** gives the minimum value.

Below is the implementation of above approach:

`// C++ implementation of the approach ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `int` `minimum = INT_MAX, x, ans; ` ` ` `vector<` `int` `> graph[100]; ` `vector<` `int` `> weight(100); ` ` ` `// Function to perform dfs to find ` `// the minimum xored value ` `void` `dfs(` `int` `node, ` `int` `parent) ` `{ ` ` ` `// If current value is less than ` ` ` `// the current minimum ` ` ` `if` `(minimum > (weight[node] ^ x)) { ` ` ` `minimum = weight[node] ^ x; ` ` ` `ans = node; ` ` ` `} ` ` ` `for` `(` `int` `to : graph[node]) { ` ` ` `if` `(to == parent) ` ` ` `continue` `; ` ` ` `dfs(to, node); ` ` ` `} ` `} ` ` ` `// Driver code ` `int` `main() ` `{ ` ` ` `x = 15; ` ` ` ` ` `// Weights of the node ` ` ` `weight[1] = 5; ` ` ` `weight[2] = 10; ` ` ` `weight[3] = 11; ` ` ` `weight[4] = 8; ` ` ` `weight[5] = 6; ` ` ` ` ` `// Edges of the tree ` ` ` `graph[1].push_back(2); ` ` ` `graph[2].push_back(3); ` ` ` `graph[2].push_back(4); ` ` ` `graph[1].push_back(5); ` ` ` ` ` `dfs(1, 1); ` ` ` ` ` `cout << ans; ` ` ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

**Output:**

3

## Recommended Posts:

- Find the node whose sum with X has minimum set bits
- Find the node whose absolute difference with X gives minimum value
- Find the node with minimum value in a Binary Search Tree
- Find the node with minimum value in a Binary Search Tree using recursion
- Minimum edges to be added in a directed graph so that any node can be reachable from a given node
- Minimum and maximum node that lies in the path connecting two nodes in a Binary Tree
- Find next right node of a given key | Set 2
- Find next right node of a given key
- Find the node whose xor with x gives maximum value
- Find the node whose sum with X has maximum set bits
- Find n-th node of inorder traversal
- Find the Kth node in the DFS traversal of a given subtree in a Tree
- Find root of the tree where children id sum for every node is given
- Find the Deepest Node in a Binary Tree
- Find mirror of a given node in Binary tree

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.