思路

递归:

考虑翻转二叉树根结点的左子树和右子树

递归出口

1.如果root为NULL,返回空节点

if(root==NULL)return NULL;

2.如果root不为NULL,且左右子树全为空,返回根节点

if(!root->left&&!root->right)return root;

递归体:

如果root不为NULL,且左右子树不全为空,递归翻转左右子树后 ,返回根节点

代码:

/*** 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 NULL;
if(!root->left&&!root->right)
{return root;
}
//递归体
TreeNode *l=invertTree(root->left);//递归翻转左子树,返回翻转后 左子树的根节点
TreeNode *r=invertTree(root->right);//递归翻转右子树,返回翻转后 右子树的根节点
root->right=l;
root->left=r;
return root;}
};

2.层序遍历

出队时操作节点:交换出队结点的左右孩子

/*** 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) {
queue<TreeNode*>que;
if(root!=NULL)
{que.push(root);
}
while(!que.empty())
{int size=que.size();for(int i=0;i<size;i++){TreeNode *node=que.front();que.pop();swap(node->left,node->right);if(node->left){que.push(node->left);}if(node->right){que.push(node->right);}}
}
return root;}
};

LeetCode 226 翻转二叉树相关推荐

  1. LeetCode:226. 翻转二叉树

    226. 翻转二叉树 题目: 解题思路: 源码: 踩坑点: 题目: 解题思路: 用递归的方法将二叉树的左右节点互换,核心思想就是交换 源码: struct TreeNode* invertTree(s ...

  2. Java实现 LeetCode 226 翻转二叉树

    226. 翻转二叉树 翻转一棵二叉树. 示例: 输入: 4/ \2 7/ \ / \ 1 3 6 9 输出: 4/ \7 2/ \ / \ 9 6 3 1 备注: 这个问题是受到 Max Howell ...

  3. LeetCode 226. 翻转二叉树(DFS BFS)

    文章目录 1. 题目信息 2. 解题 2.1 DFS 2.2 BFS 1. 题目信息 翻转一棵二叉树. 示例:输入:4/ \2 7/ \ / \ 1 3 6 9输出:4/ \7 2/ \ / \ 9 ...

  4. leetcode 226. 翻转二叉树

    难度:简单 频次:47 题目: 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点. 解题思路: 1.DFS遍历的时候反转root的左右节点即可 2.后者用队列模拟栈模拟递归 代码 / ...

  5. Leetcode 226. 翻转二叉树 (每日一题 20210819)

    翻转一棵二叉树.示例:输入:4/ \2 7/ \ / \ 1 3 6 9 输出:4/ \7 2/ \ / \ 9 6 3 1链接:https://leetcode-cn.com/problems/in ...

  6. LeetCode 226翻转二叉树-简单

    翻转一棵二叉树. 示例: 输入: 4/ \2 7/ \ / \ 1 3 6 9 输出: 4/ \7 2/ \ / \ 9 6 3 1 代码如下: /*** Definition for a binar ...

  7. leetcode - 226. 翻转二叉树

    翻转一棵二叉树. 示例: 输入: 输出: /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode ...

  8. Leetcode——226. 翻转二叉树

    问题 翻转一个二叉树,例子如下: 输入:4/ \2 7/ \ / \ 1 3 6 9 输出:4/ \7 2/ \ / \ 9 6 3 1 可以看出相当于原二叉树的镜像,也就是像逆置二叉树的每一层 解决 ...

  9. 代码随想录【day 14 二叉树】| 层序遍历 226.翻转二叉树 101.对称二叉树

    代码随想录[day 14 二叉树]| 层序遍历 226.翻转二叉树 101.对称二叉树 层序遍历 卡哥文解 视频讲解 题目链接:102.二叉树的层序遍历 解题思路 代码实现 题目链接:107.二叉树的 ...

最新文章

  1. 这可能是十年来最酷的神经科学发现
  2. JAVA实现从尾到头打印链表(《剑指offer》)
  3. 通过设计绿色数据中心寻求循环经济
  4. Failed to read auto-increment value from storageengine错误的处理方法
  5. springboot教程(三)
  6. 【树链剖分】染色(luogu 2486/金牌导航 树链剖分-3)
  7. 3dmax材质丢失插件_3dmax插件排行|室内设计师效果图用疯狂模渲大师,怎么把cononra材质转换成vray材质?...
  8. 【零基础学Java】—递归(五十一)
  9. 26复杂类型比较,使用Compare .NET objects组件
  10. 30天搞定Java--day6
  11. Python海龟画图
  12. 自从学会了用python解析视频,都不用去找下载按钮在哪了,是真的方便
  13. 氮化硼修饰导热复合物和碳纤维氮化硼涂层|六方氮化硼修饰石墨化氮化碳复合光催化剂|六方氮化硼(h-BN)修饰玻碳电极(GCE-BN) 氮化物
  14. Thinkpad T420,430等电脑使用微信进行语音视频时麦克杂音
  15. pc端点击图片放大效果
  16. 计算机作文1500字,网络人生作文1500字
  17. Race Condition 引起的 HashMap CPU100%
  18. 华工计算机网络辅修,华工计算机网络第一次作业
  19. android 一个应用两个入口一个应用两个快捷方式(不同图标显示)
  20. 超好玩硬币游戏,你都会玩吗?

热门文章

  1. 实现中文下的UITableView Index
  2. UVA12022 Ordering T-shirts【数学+打表】
  3. 《程序设计技术》第五章例程
  4. UVA11292 HDU1902 POJ3646 The Dragon of Loowater【贪心】
  5. 中英文对照 —— 色彩的描述
  6. matlab 局部特征检测与提取(问题与特征)
  7. 手推机器学习公式(一) —— BP 反向传播算法
  8. 数据类型的提升(promotion)
  9. C++::增加目标码(object code)的大小的操作
  10. java bfs dfs_java优先搜索(DFS/BFS)实际应用