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

简介: 给你一棵 完美 二叉树的根节点 root ,请你反转这棵树中每个 奇数 层的节点值。例如,假设第 3 层的节点值是 [2,1,3,4,7,11,29,18] ,那么反转后它应该变成 [18,29,11,7,4,3,1,2] 。反转后,返回树的根节点。完美 二叉树需满足:二叉树的所有父节点都有两个子节点,且所有叶子节点都在同一层。节点的 层数 等于该节点到根节点之间的边数。

 题目

给你一棵 完美 二叉树的根节点 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);
          }
      }

      image.gif


      目录
      相关文章
      |
      6天前
      |
      存储 Java
      ZigZagging on a Tree二叉树蛇形层次遍历(Java语言)
      ZigZagging on a Tree二叉树蛇形层次遍历(Java语言)
      11 1
      |
      6天前
      |
      Java
      Tree Traversals Again(Java语言)(先序和中序创建二叉树)(遍历树)
      Tree Traversals Again(Java语言)(先序和中序创建二叉树)(遍历树)
      13 4
      |
      6天前
      leetcode代码记录(二叉树的所有路径
      leetcode代码记录(二叉树的所有路径
      12 0
      |
      1天前
      |
      算法
      数据结构与算法⑮(第四章_下)二叉树OJ(力扣:144,965,104,110,226,100,101,572)(下)
      数据结构与算法⑮(第四章_下)二叉树OJ(力扣:144,965,104,110,226,100,101,572)
      7 1
      |
      1天前
      |
      算法 C++
      数据结构与算法⑮(第四章_下)二叉树OJ(力扣:144,965,104,110,226,100,101,572)(上)
      数据结构与算法⑮(第四章_下)二叉树OJ(力扣:144,965,104,110,226,100,101,572)
      7 1
      |
      6天前
      leetcode代码记录(对称二叉树 中序遍历+回文串 为什么不行
      leetcode代码记录(对称二叉树 中序遍历+回文串 为什么不行
      8 0
      |
      6天前
      leetcode代码记录(二叉树的最小深度
      leetcode代码记录(二叉树的最小深度
      10 0
      |
      6天前
      leetcode代码记录(二叉树的最大深度
      leetcode代码记录(二叉树的最大深度
      9 0
      |
      6天前
      leetcode代码记录(翻转二叉树
      leetcode代码记录(翻转二叉树
      8 0
      |
      6天前
      leetcode代码记录(二叉树的层序遍历
      leetcode代码记录(二叉树的层序遍历
      12 0

      热门文章

      最新文章