LeetCode226翻转二叉树

Posted 臭咸鱼

tags:

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

题目链接

https://leetcode-cn.com/problems/invert-binary-tree/

题解一

  • 递归解法
  • 我写的,不够简洁
// Problem: LeetCode 226
// URL: https://leetcode-cn.com/problems/invert-binary-tree/
// Tags: Tree Recursion
// Difficulty: Easy

#include <iostream>
using namespace std;

struct TreeNode{
    TreeNode* left;
    TreeNode* right;
    int val;
    TreeNode(int x):val(x),left(nullptr),right(nullptr){}
};

class Solution{
public:
    TreeNode* invertTree(TreeNode* root) {
        // 递归出口,空结点直接返回
        if(root==nullptr)
            return nullptr;
        // 该结点交换左右子树
        TreeNode *temp = root->left;
        root->left = root->right;
        root->right = temp;
        // 递归翻转左右子树
        invertTree(root->left);
        invertTree(root->right);
        return root;
    }
};

题解二

  • 比我写的简洁一些,交换了最后两步的顺序,特别是利用了二叉树翻转后根结点不变的特点
// Problem: LeetCode 226
// URL: https://leetcode-cn.com/problems/invert-binary-tree/
// Tags: Tree Recursion
// Difficulty: Easy

#include <iostream>
using namespace std;

struct TreeNode{
    TreeNode* left;
    TreeNode* right;
    int val;
    TreeNode(int x):val(x),left(nullptr),right(nullptr){}
};

class Solution{
public:
    TreeNode* invertTree(TreeNode* root) {
        // 递归出口,空结点直接返回
        if(root==nullptr)
            return nullptr;
        // 递归翻转左右子树
        TreeNode* left = invertTree(root->left);
        TreeNode* right = invertTree(root->right);
        // 该结点交换左右子树
        root->left = right;
        root->right = left;
        return root;
    }
};

作者:@臭咸鱼

转载请注明出处:https://www.cnblogs.com/chouxianyu/

欢迎讨论和交流!


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

LeetCode #226 翻转二叉树

leetcode226 翻转二叉树(Easy)

LeetCode Java刷题笔记—226. 翻转二叉树

Leetcode226. 翻转二叉树(JAVA递归)

Leetcode刷题100天—226. 翻转二叉树(二叉树)—day03

Leetcode刷题100天—226. 翻转二叉树(二叉树)—day03