Untitled

 avatar
unknown
plain_text
a month ago
2.1 kB
2
Indexable
import java.util.*;

class TreeNode {
    int val;
    TreeNode left, right;

    TreeNode(int val) {
        this.val = val;
        this.left = this.right = null;
    }
}

public class ReverseOddLevelsDFS {
    public TreeNode reverseOddLevels(TreeNode root) {
        if (root == null) return null;

        // Reverse odd levels of the tree
        reverseOddLevelsHelper(root.left, root.right, 1); // Start at level 1
        return root;
    }

    private void reverseOddLevelsHelper(TreeNode left, TreeNode right, int level) {
        // Base case: If either node is null, return
        if (left == null || right == null) return;

        // Reverse values at odd levels
        if (level % 2 == 1) {
            int temp = left.val;
            left.val = right.val;
            right.val = temp;
        }

        // Recur for the next level (both children)
        reverseOddLevelsHelper(left.left, right.right, level + 1);
        reverseOddLevelsHelper(left.right, right.left, level + 1);
    }

    public static void main(String[] args) {
        ReverseOddLevelsDFS solution = new ReverseOddLevelsDFS();

        // Example 1
        TreeNode root1 = new TreeNode(2);
        root1.left = new TreeNode(3);
        root1.right = new TreeNode(5);
        root1.left.left = new TreeNode(8);
        root1.left.right = new TreeNode(13);
        root1.right.left = new TreeNode(21);
        root1.right.right = new TreeNode(34);

        TreeNode result1 = solution.reverseOddLevels(root1);
        printTree(result1); // Expected Output: [2,5,3,8,13,21,34]
    }

    private static void printTree(TreeNode root) {
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        while (!queue.isEmpty()) {
            TreeNode node = queue.poll();
            System.out.print(node.val + " ");
            if (node.left != null) queue.offer(node.left);
            if (node.right != null) queue.offer(node.right);
        }
        System.out.println();
    }
}
Leave a Comment