• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

elm-and-star

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

LeetCode刷题记录|LeetCode热题100|226.翻转二叉树(easy)

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

 

思路与算法:从根节点开始,递归地对树进行遍历,并从叶子节点先开始翻转。如果当前遍历到的节点 root 的左右两棵子树都已经翻转,只需交换两棵子树的位置,即可完成以 root 为根节点的整棵子树的翻转。

时间复杂度:O(n)

空间复杂度:O(n)
代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
struct TreeNode* invertTree(struct TreeNode* root){ if(!root) return NULL; struct TreeNode* right, * left; right = invertTree(root->right); left = invertTree(root->left); root->right = left; root->left = right; return root; }

示例代码:

struct TreeNode* invertTree(struct TreeNode* root){
    struct TreeNode* kkl;
    if(!root)
        return root;
    invertTree(root->left);
    invertTree(root->right);
    kkl=root->right;
    root->right=root->left;
    root->left=kkl;
    return root;
}

posted on 2023-05-05 22:04  白榆_Elm  阅读(24)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3