力扣-树的遍历-226. 翻转二叉树

力扣树的遍历-226. 翻转二叉树

226. 翻转二叉树

题目描述

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

示例 1:

输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]
示例 2:

输入:root = [2,1,3]
输出:[2,3,1]
示例 3:

输入:root = []
输出:[]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/invert-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:局部翻转到最终实现全局翻转

 利用前序遍历,如果当前节点非空,则将左右节点交换位置,注意并不是交换值,而是交换节点本身;如果当前节点为空,说明已经遍历到底,返回递归。
 这虽然是一道简单题,却涉及到了基本的递归思想: 首先判断递归结束条件,然后是单层逻辑,单层递归逻辑根据题目的不同而不同。但对于树的大部分题目,单层递归逻辑都离不开树的前中后序遍历、层序遍历。
 我自己写的代码如下,代码已经加了注释,各位小伙伴如果有什么问题可以在评论里提出来,欢迎大家交流。

private void traverse(TreeNode root) {
        //递归结束条件
        if (root == null) {
            return;
        }
        //单层递归逻辑
        TreeNode temp = root.left;
        root.left = root.right;
        root.right = temp;
        traverse(root.left);
        traverse(root.right);
    }

这是我在CSDN上第二篇博客,另外附上我自己搭建的个人博客网址,里面记录了我之前记录的学习心得,欢迎大家交流讨论。

你可能感兴趣的:(#,力扣,算法,java,leetcode,算法)