【LeetCode226】翻转二叉树(Howell的噩梦)

简介: 基础递归题。可以直接后序遍历(前序也可),递归到底后就交换左右孩子(叶结点),再往二叉树上返回。

1.题目

image.png

2.思路

基础递归题。

可以直接后序遍历(前序也可),递归到底后就交换左右孩子(叶结点),再往二叉树上返回。

前序和后序唯一的区别是:

前序遍历:将「处理当前节点」放到「递归左子树」之前。

后序遍历:将「处理当前节点」放到「递归右子树」之后。

3.代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
        if(root==NULL){
            return root;//遍历到null节点时,不用翻转,直接返回它本身
        }
        TreeNode* leftchild=invertTree(root->left);
        TreeNode* rightchild=invertTree(root->right);
        root->left=rightchild;
        root->right=leftchild;
        return root;
    }
};

4.复杂度

(1)时间复杂度:O ( N ) O(N)O(N),遍历每个结点(N个结点)。

(2)空间复杂度:O ( l o g N ) O(logN)O(logN),递归栈高度即二叉树高度。


相关文章
|
2月前
力扣226:翻转二叉树
力扣226:翻转二叉树
15 0
|
1月前
|
算法
LeetCode[题解] 1261. 在受污染的二叉树中查找元素
LeetCode[题解] 1261. 在受污染的二叉树中查找元素
16 1
|
1月前
力扣面试经典题之二叉树
力扣面试经典题之二叉树
16 0
|
3天前
[leetcode~dfs]1261. 在受污染的二叉树中查找元素
[leetcode~dfs]1261. 在受污染的二叉树中查找元素
[leetcode~dfs]1261. 在受污染的二叉树中查找元素
|
11天前
|
算法 DataX
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
|
12天前
|
算法
【力扣】94. 二叉树的中序遍历、144. 二叉树的前序遍历、145. 二叉树的后序遍历
【力扣】94. 二叉树的中序遍历、144. 二叉树的前序遍历、145. 二叉树的后序遍历
|
1月前
leetcode热题100.二叉树中的最大路径和
leetcode热题100.二叉树中的最大路径和
18 0
|
1月前
leetcode热题100. 二叉树的最近公共祖先
leetcode热题100. 二叉树的最近公共祖先
20 0
|
1月前
|
机器学习/深度学习 NoSQL Shell
力扣刷题-翻转字符串
力扣刷题-翻转字符串
12 1
|
1月前
|
机器学习/深度学习 人工智能 算法
LeetCode刷题--- 面试题 01.07. 旋转矩阵(原地旋转+翻转替旋转)
LeetCode刷题--- 面试题 01.07. 旋转矩阵(原地旋转+翻转替旋转)