DEV Community

SalahElhossiny
SalahElhossiny

Posted on

Reverse Odd Levels of Binary Tree

Given the root of a perfect binary tree, reverse the node values at each odd level of the tree.

For example, suppose the node values at level 3 are [2,1,3,4,7,11,29,18], then it should become [18,29,11,7,4,3,1,2].
Return the root of the reversed tree.

A binary tree is perfect if all parent nodes have two children and all leaves are on the same level.

The level of a node is the number of edges along the path between it and the root node.

class Solution {

    public void revOdd(TreeNode root1, TreeNode root2, int level){
        if((root1.left == null && root1.right == null) || (root2.left == null && root2.right == null)) return;

        if(level % 2 == 0){
            int temp = root1.left.val;
            root1.left.val = root2.right.val;
            root2.right.val = temp;
        }

        revOdd(root1.left, root2.right, level+1);
        revOdd(root1.right, root2.left, level+1);

    }

    public TreeNode reverseOddLevels(TreeNode root) {
        revOdd(root, root, 0);
        return root;
    }
}


Enter fullscreen mode Exit fullscreen mode

Top comments (0)