翻转二叉树(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)的主要内容,如果未能解决你的问题,请参考以下文章