C++ 二叉树的镜像实例详解
发布时间 - 2026-01-11 01:44:56 点击率:次二叉树的镜像:将一个二叉树的左右子树,调换位置。即下图的形式:
递归的思想是:
从根节点的左右子树进行交换,然后以根节点的左子树为根节点,而后以根节点的右结点为根节点,进行左右子树交换。遇到空节点或叶节点直接返回。下面求二叉树镜像的函数代码实现:
template<class T>
void MirroTree(TreeNode<T> * root)
{
if (root == NULL)
return;
if (root->_left == NULL && root->_right == NULL)
return;
else
{
TreeNode<T>* temp = root->_left;
root->_left = root->_right;
root->_right = temp;
}
MirroTree(root->_left);
MirroTree(root->_right);
}
非递归实现思想:
利用stack栈的FILO,即先进后出原则,将根节点先行压入栈中,然后进入栈同时取栈顶结点并pop栈,然后交换左右子树的结点,若根节点的左右子树不为空,即压入栈中,直到栈为空则停止。
下面是非递归实现代码:
template<class T>
void MirroTree_NoR(TreeNode<T>* root)
{
stack<TreeNode<T>*> s;
s.push(root);
while (s.size())
{
TreeNode<T>* Top = s.top();
if (Top->_left != NULL || Top->_right != NULL)
{
TreeNode<T>* temp = Top->_left;
Top->_left = Top->_right;
Top->_right = temp;
}
if (Top->_left != NULL)
s.push(Top->_left);
if (Top->_right != NULL)
s.push(Top->_right);
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# C++
# 二叉树的镜像
# 二叉树
# C++实现二叉树基本操作详解
# C++二叉树实现词频分析功能
# C++ 数据结构二叉树(前序/中序/后序递归、非递归遍历)
# C++ 数据结构完全二叉树的判断
# C++ 遍历二叉树实例详解
# c++先序二叉树的构建详解
# 子树
# 递归
# 镜像
# 为空
# 希望能
# 谢谢大家
# MirroTree
# void
# gt
# root
# NULL
# TreeNode
# lt
# class
# pre
# strong
# template
# cpp
# brush
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何升级到最新版本?(升级指南和步骤)
微信小程序 scroll-view组件实现列表页实例代码
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
如何做网站制作流程,*游戏网站怎么搭建?
Laravel Fortify是什么,和Jetstream有什么关系
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
如何快速生成凡客建站的专业级图册?
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
EditPlus中的正则表达式 实战(4)
html5的keygen标签为什么废弃_替代方案说明【解答】
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
Java解压缩zip - 解压缩多个文件或文件夹实例
Laravel如何实现本地化和多语言支持?(i18n教程)
如何为不同团队 ID 动态生成多个非值班状态按钮
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
如何在万网利用已有域名快速建站?
Laravel怎么清理缓存_Laravel optimize clear命令详解
WEB开发之注册页面验证码倒计时代码的实现
郑州企业网站制作公司,郑州招聘网站有哪些?
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
如何快速生成可下载的建站源码工具?
在线教育网站制作平台,山西立德教育官网?
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
python中快速进行多个字符替换的方法小结
原生JS获取元素集合的子元素宽度实例
音响网站制作视频教程,隆霸音响官方网站?
如何续费美橙建站之星域名及服务?
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
Laravel如何配置和使用缓存?(Redis代码示例)
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
公司网站制作价格怎么算,公司办个官网需要多少钱?
如何选择PHP开源工具快速搭建网站?
Laravel如何与Inertia.js和Vue/React构建现代单页应用
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
SQL查询语句优化的实用方法总结
如何快速查询网站的真实建站时间?
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
Python文件异常处理策略_健壮性说明【指导】
如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】
html如何与html链接_实现多个HTML页面互相链接【互相】
桂林网站制作公司有哪些,桂林马拉松怎么报名?
如何在万网主机上快速搭建网站?
如何确认建站备案号应放置的具体位置?

