2415. 反转二叉树的奇数层 --力扣 --JAVA

题目

给你一棵 完美 二叉树的根节点 root ,请你反转这棵树中每个 奇数 层的节点值。

  • 例如,假设第 3 层的节点值是 [2,1,3,4,7,11,29,18] ,那么反转后它应该变成 [18,29,11,7,4,3,1,2] 。

反转后,返回树的根节点。

完美 二叉树需满足:二叉树的所有父节点都有两个子节点,且所有叶子节点都在同一层。

节点的 层数 等于该节点到根节点之间的边数。

解题思路

  1. 奇数层,右子树的右子节点和左子树的左子节点交换,左子树的右子节点和右子树的左子节点交换。

代码展示

class Solution {
    public TreeNode reverseOddLevels(TreeNode root) {
        dfs(root.left,root.right,0);
        return root;
    }

    private void dfs(TreeNode left, TreeNode right, int index){
        if(left == null){
            return;
        }
        if(index % 2 == 0) {
            int temp = left.val;
            left.val = right.val;
            right.val = temp;
        }
        index++;
        dfs(left.left,right.right,index);
        dfs(left.right,right.left,index);
    }
}

你可能感兴趣的:(力扣练习,算法,数据结构)