Geeksforgeeks

Timer is Running

Given a binary tree with a value associated with each node, we need to choose a subset of these nodes such that sum of chosen nodes is maximum under a constraint that no two chosen node in subset should be directly connected that is, if we have taken a node in our sum then we can’t take its any children in consideration and vice versa.

**Example 1:**

**Input:
** 11
/ \
1 2
**Output: **11**
Explanation: **The maximum sum is sum of
node 11.

**Example 2:**

**Input:
**1
** / \
**2 3
/ / \
4 5 6
**Output: **16**
Explanation: **The maximum sum is sum of
nodes 1 4 5 6** **, i.e 16. These nodes are
non adjacent.

**Your Task:**

You don't need to read input or print anything. You just have to complete function **getMaxSum() **which accepts root node of the tree as parameter and returns the maximum sum as described.

**Expected Time Complexity: **O(N).

**Expected Auxiliary Space: **O(Height of the Tree).

**Constraints:**

1 <= N <= 1000

If you have purchased any course from GeeksforGeeks then please ask your doubt on course discussion forum. You will get quick replies from GFG Moderators there.

Pathak1899 | 436 |

yashdip123 | 380 |

kirtidee18 | 377 |

ykaushik | 261 |

_saswata | 232 |

kirtidee18 | 1057 |

ykaushik | 733 |

aggarwalvatsal5 | 709 |

pmr_3689 | 570 |

harbilassingh | 530 |

blackshadows | 5456 |

Ibrahim Nash | 5450 |

akhayrutdinov | 5111 |

mb1973 | 4976 |

Quandray | 4823 |

Login to report an issue on this page.