Given a Binary Tree having odd and even elements, sink all it’s even valued nodes such that no node with even value could be a parent of a node with odd value.
There can be multiple outputs for a given tree, we need to print one of them. It is always possible to convert a tree (Note that a node with odd nodes and all even nodes follows the rule)
Input: 1 / \ 5 8 / \ / \ 2 4 9 10 Output: 1 5 9 2 4 8 10 Level order traversal after sinking all the nodes Input: 4 / \ 2 1 Output: 4 2 1
Explanation: In the first case Given tree 4 / \ 2 1 There are two trees possible 1 1 / \ OR / \ 2 4 4 2 In the second example also, Given tree 1 / \ 5 8 / \ / \ 2 4 9 10 There are more than one tree that can satisfy the condition 1 1 / \ / \ 5 9 OR 5 9 / \ / \ / \ / \ 2 4 8 10 4 2 8 10
- Basically, it is required to swap the even value of a node with odd value of one of its descendants.
- The idea is to traverse the tree in postorder fashion.
- Since we process in postorder, for each even node encountered, it’s left and right subtrees are already balanced (sinked).
- Check if it’s an even node and its left or right child has an odd value. If odd value is found, swap the node’s data with that of odd child node and call the procedure on the odd child to balance the subtree.
- If both children have even values, that means that all its descendants are even.
Below is C++ implementation of the idea:
1 5 9 2 4 8 10
- Sink Odd nodes in Binary Tree
- Sum of all nodes in a binary tree
- Sum of all the Boundary Nodes of a Binary Tree
- Sum of all leaf nodes of binary tree
- Sum of nodes in the right view of the given binary tree
- Product of all nodes in a Binary Tree
- Sum of nodes in top view of binary tree
- XOR of path between any two nodes in a Binary Tree
- Find maximum among all right nodes in Binary Tree
- Sum of nodes at maximum depth of a Binary Tree
- Print nodes in top view of Binary Tree | Set 2
- Print all nodes between two given levels in Binary Tree
- Given a binary tree, how do you remove all the half nodes?
- Print all internal nodes of a Binary tree
- Find sum of all nodes of the given perfect 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 firstname.lastname@example.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.