当前位置: 首页 > news >正文

2、设计在链式存储结构上交换二叉树中所有结点左右子树的算法。

要在链式存储结构上交换二叉树中所有节点的左右子树,你可以采用递归的方式。对于每个节点,交换其左右子树,并递归地对左子树和右子树执行相同的操作。

#include <iostream>struct TreeNode {int data;TreeNode* left;TreeNode* right;//构造,可根据需要删除TreeNode(int val) : data(val), left(nullptr), right(nullptr) {}
};//核心交换代码
void swapLeftAndRight(TreeNode* root) {if (root == nullptr) {return;}// 递归交换左右子树swapLeftAndRight(root->left);swapLeftAndRight(root->right);// 交换左右子树的指针TreeNode* temp = root->left;root->left = root->right;root->right = temp;
}// 验证交换结果:中序遍历
void inorderTraversal(TreeNode* root) {if (root != nullptr) {inorderTraversal(root->left);std::cout << root->data << " ";inorderTraversal(root->right);}
}int main() {// 构建一个简单的二叉树作为例子TreeNode* root = new TreeNode(1);root->left = new TreeNode(2);root->right = new TreeNode(3);root->left->left = new TreeNode(4);root->left->right = new TreeNode(5); inorderTraversal(root); printf("\n");// 交换左右子树swapLeftAndRight(root);inorderTraversal(root); return 0;
}

这段代码中,swapLeftAndRight 函数通过递归地交换每个节点的左右子树,并且在 main 函数中构建了一个简单的二叉树,然后进行了交换并输出了交换后的中序遍历结果。

相关文章:

  • 设计模式之美学习笔记-理论篇1-面向对象的特性
  • 6-13连接两个字符串
  • 基于SSM的网上手机销售系统
  • 正则表达式从放弃到入门(2):grep命令详解
  • qt-C++笔记之QStringList
  • qt5.15播放音频示例(4种方法)
  • 字符函数 和 字符串函数
  • 有序表常见题型
  • DBS note7 (end):DB Design
  • Google Guava 反射工具使用详解
  • Docker容器网络模式
  • Blender学习笔记:小车狂奔动画
  • 安卓8预装可卸载应用
  • [数据结构]HashSet与LinkedHashSet的底层原理学习心得
  • Git 标签管理
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • canvas 高仿 Apple Watch 表盘
  • crontab执行失败的多种原因
  • gf框架之分页模块(五) - 自定义分页
  • java概述
  • Java知识点总结(JavaIO-打印流)
  • Joomla 2.x, 3.x useful code cheatsheet
  • js算法-归并排序(merge_sort)
  • leetcode386. Lexicographical Numbers
  • Making An Indicator With Pure CSS
  • python_bomb----数据类型总结
  • REST架构的思考
  • windows下mongoDB的环境配置
  • 从0实现一个tiny react(三)生命周期
  • 给新手的新浪微博 SDK 集成教程【一】
  • 记一次和乔布斯合作最难忘的经历
  • 理清楚Vue的结构
  • 小程序 setData 学问多
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 智能合约开发环境搭建及Hello World合约
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • #Linux(帮助手册)
  • (03)光刻——半导体电路的绘制
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (SpringBoot)第七章:SpringBoot日志文件
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (二)pulsar安装在独立的docker中,python测试
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)ssm高校实验室 毕业设计 800008
  • (推荐)叮当——中文语音对话机器人
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)visual stdio 书签功能介绍
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • .aanva
  • .htaccess配置常用技巧
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .net/c# memcached 获取所有缓存键(keys)
  • .net6使用Sejil可视化日志