翻转二叉树(2021-8-6)

Posted 爪哇Coding

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了翻转二叉树(2021-8-6)相关的知识,希望对你有一定的参考价值。

翻转二叉树

2021-8-6打卡LeetCode的第226题---翻转二叉树。曾经我做过翻转链表;翻转数组;翻转字符串,当时我们的思路用的比较多的就是指针去完成他们的翻转。在翻转链表的时候我好像双指针和递归的思路都用过,具体想不起来了。今天呢,我们再来翻转二叉树。

解题思路

既然都到树的份上了,我们也给它点薄面。我们就用递归去完成它吧。递归的几个要点,1.思考根节点要干嘛?2.递归出口是什么?

  • 根节点的它的左右孩子得交换位置,这个一换的话,左右子树的位置都被交换了。这个操作其实就相当于我们交换数组元素的操作,我们的找个临时变量噶其中的某一个节点存储起来,然后再交换。在二叉树中我们是递归去操作,根节点的右孩子作为根节点的左孩子,左孩子替换为根节点的右孩子,递归处理左右孩子,最终返回根节点即可。
  • 递归出口,也就是如果我们的根据节点为空的时候,有什么操作呢?根节点为空啥都不用交换,直接返回。

代码实现

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */

class Solution {
    public TreeNode invertTree(TreeNode root) {
      if(root==null)return root;
      //临时变量
      TreeNode leftNode=root.left;
      //右孩子替换左孩子
      root.left=invertTree(root.right);
      //左孩子替换为右孩子
      root.right=invertTree(leftNode);
      //返回根节点
      return root;

    }
}


以上是关于翻转二叉树(2021-8-6)的主要内容,如果未能解决你的问题,请参考以下文章

二叉树:你真的会翻转二叉树么?

代码随想录算法训练营第15天 | ● 层序遍历 10 ● 226.翻转二叉树 ● 101.对称二叉树 2

算法 翻转二叉树 dfs

翻转一颗二叉树其实只需要 7 行代码

java刷题--226翻转二叉树

二叉树初阶OJ题