首页 > 编程语言 >【C++】翻转二叉树(递归、非递归)

【C++】翻转二叉树(递归、非递归)

时间:2024-03-06 11:33:05浏览次数:19  
标签:node right TreeNode 递归 C++ 二叉树 root left

//使用递归翻转二叉树
TreeNode* reverseTree(TreeNode* root) {
  if (!root) return root;
  swap(root->left, root->right);
  reverseTree(root->left);
  reverseTree(root->right);
  return root;
}
//使用队列翻转二叉树 层序遍历
TreeNode* invertTree(TreeNode* root) {
  queue<TreeNode*> q;
  if (!root) return root;
  q.push(root);
  while (!q.empty()) {
    TreeNode* node;
    for (int i = 0; i < q.size(); ++i) {
      node = q.front();
      q.pop();
      if (node->left && node->right) {
        swap(node->left, node->right);
      }
      if (node->left) q.push(node->left);
      if (node->right) q.push(node->right);
    }
  }
  return root;
}

 

标签:node,right,TreeNode,递归,C++,二叉树,root,left
From: https://www.cnblogs.com/smartlearn/p/18056169

相关文章

  • c++中nlohmann json的基本使用教程
    摘自:https://www.jb51.net/article/261677.htm 一.json.hpp库下载及安装1.1开源地址及引入方法nlohmannjson的开源项目地址,其中有对json使用方法的详细说明:https://github.com/nlohmann/json#serialization–deserialization对于我们项目中要使用nlohmannjson工具,只......
  • Visual Studio部署C++环境下OpenCV库
      本文介绍在VisualStudio2022中配置、编译C++计算机视觉库OpenCV的方法。1OpenCV库配置  首先,我们进行OpenCV库的下载与安装。作为一个开源的库,我们直接在其官方下载网站中进行下载即可;如下图所示,我们首先选择需要下载的操作系统。  随后,即可在弹出的新界面中自动开......
  • 代码随想录算法训练营第三十七天 | 738. 单调递增的数字,968.监控二叉树
    968.监控二叉树 已解答困难 相关标签相关企业 给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。 示例1:输入:[0,0,null,0,0]输出:1......
  • 基于c++的排雷小游戏二次开发
    源代码地址https://blog.csdn.net/weixin_45906253/article/details/121237647?spm=1001.2101.3001.6650.9&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-9-121237647-blog-129464051.235^v43^pc_blog_bottom_relevance_base7&......
  • (持续更新)c++引用
    引用的基本使用作用:给变量起别名语法:数据类型&别名=原名图示:代码://引用基本语法//数据类型&别名=原名inta=10;int&b=a;//创建引用//结果:a=10b=10cout<<"a="<<a<<endl;cout<<"b="<<b<<......
  • 257. 二叉树的所有路径c
    很好的题目,让我的sprintf旋转/***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*//***Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*......
  • C++ 释放vector内存
    释放vector内存的方法有多种,具体取决于使用vector的方式以及释放内存的目的。下面列举几种常见的释放vector内存的方法:1、清空vector调用vector的clear()方法可以清空vector中的元素,但是并不会释放vector所占用的内存空间。这意味着,如果之后还需要往vector中添加元素,ve......
  • C++ 如何快速清空vector以及释放vector内存?
    1、为什么需要主动释放vector内存vector其中一个特点:内存空间只会增长,不会减小,援引C++Primer:为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储。设想一下,当vector添加一个元素时,为了满足连续存放这个特性,都需要重新分配空间、拷贝元......
  • 110. 平衡二叉树c
    /***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*/intmax(inti,intj){if(i>j)returni;returnj;}intheight(structTreeNode*root){......
  • C++ 职工信息管理系统项目的二次开发 2252423 ywx
    来源:同学大二下的期末大作业:网上购书系统项目。运行环境:VisualStudio2022①项目结构:②运行结果截图:主菜单界面:功能选择界面:工资总额输出界面:平均工资输出界面:显示输出界面:增加正式员工界面:增加临时员工界面:修改数据界面:③主要问题:查询功能未完善,有时会出现......