求二元查找树的镜像

C语言实现输入一颗二元查找树并将该树转换为它的镜像 主要介绍了C语言实现输入一颗二元查找树并将该树转换为它的镜像,是数据结构中二元查找树的一个比较经典的算法,有不错的借鉴价值,需要的朋友可以参考下 立即下载
题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。

例如输入:

     8
    /  \
  6      10
/\       /\
5  7    9   11

输出:

      8
    /  \
  10    6
/\      /\
11  9  7  5

参考网址:http://zhedahht.blog.163.com/blog/static/2541117420072159363370/

import java.util.LinkedList;


public class Test_11 {
	public static void main(String[] args) {	
		BSTree bst = new BSTree();
		int[] arr = {8,6,10,5,9,7,11};
		for(int i =0;i<arr.length;i++){
			bst.insert(arr[i]);
		}
		bst.Midorder(bst.getRoot());
		Mirror_loop(bst.getRoot());
		bst.Midorder(bst.getRoot());
	}
	
	//递归实现镜像
	public static void Mirror(TreeNode1 root){
		if(root == null){
			return;
		}
		TreeNode1 temp = root.getLeftchild();
		root.setLeftchild(root.getRightchild());
		root.setRightchild(temp);
		if(root.getLeftchild()!=null){
			Mirror(root.getLeftchild());
		}
		if(root.getRightchild() !=null){
			Mirror(root.getRightchild());
		}
	}
	//循环实现镜像,用队列
	public static void Mirror_loop(TreeNode1 root){
		if(root == null){
			return;
		}
		LinkedList<TreeNode1> queue = new LinkedList<TreeNode1>();//用LinkedList模拟队列
	    queue.add(root);
	    while(queue.size() !=0){
	    	TreeNode1 pnode = queue.removeFirst();//弹出队列第一个元素
	    	//交换他的左右孩子
	    	TreeNode1 temp = pnode.getLeftchild();
	    	pnode.setLeftchild(pnode.getRightchild());
	    	pnode.setRightchild(temp);
	    	//若左孩子不为空,把左孩子放入队列
	    	if(pnode.getLeftchild() != null){
	    		queue.add(pnode.getLeftchild());
	    	}
	    	//若右孩子不为空,把右孩子放入队列
	    	if(pnode.getRightchild() != null){
	    		queue.add(pnode.getRightchild());
	    	}
	    }
	    
	}

}
class TreeNode1{
	private int key;
	private TreeNode1 leftchild;
	private TreeNode1 rightchild;
	private TreeNode1 parent;
	public int getKey() {
		return key;
	}
	public void setKey(int key) {
		this.key = key;
	}
	public TreeNode1 getLeftchild() {
		return leftchild;
	}
	public void setLeftchild(TreeNode1 leftchild) {
		this.leftchild = leftchild;
	}
	public TreeNode1 getRightchild() {
		return rightchild;
	}
	public void setRightchild(TreeNode1 rightchild) {
		this.rightchild = rightchild;
	}
	public TreeNode1 getParent() {
		return parent;
	}
	public void setParent(TreeNode1 parent) {
		this.parent = parent;
	}
	public TreeNode1(int key,TreeNode1 leftchild,TreeNode1 rightchild,TreeNode1 parent){
		this.key = key;
		this.leftchild = leftchild;
		this.rightchild = rightchild;
		this.parent = parent;
	}
}
class BSTree{
	private TreeNode1 root;

	public TreeNode1 getRoot() {
		return root;
	}

	public void setRoot(TreeNode1 root) {
		this.root = root;
	}
	
	public void insert(int num){
		TreeNode1 newnode = new TreeNode1(num,null,null,null);
		TreeNode1 parentnode = null;
		TreeNode1 pnode = root;
		if(root == null){
			root = newnode;
			return;
		}
		while(pnode != null){
			parentnode = pnode;
			if(num<pnode.getKey()){
				pnode = pnode.getLeftchild();
			}
			else if(num>pnode.getKey()){
				pnode = pnode.getRightchild();
			}
			else {
				return;//树中已有此节点
				}
		}
			if(num<parentnode.getKey()){
				parentnode.setLeftchild(newnode);
				newnode.setParent(parentnode);
			}
			else{
				parentnode.setRightchild(newnode);
				newnode.setParent(parentnode);
			}
			
		
	}
	public void Midorder(TreeNode1 root){
		if(root == null){
			System.out.println("树为空!");
			return;
		}
		if(root.getLeftchild() != null)
			Midorder(root.getLeftchild());
		System.out.println(root.getKey());
		if(root.getRightchild() != null)
			Midorder(root.getRightchild());
	}
}



 

WPS文档编辑时空行问题解决方案 本文详细介绍了如何解决WPS文档编辑时空行的问题,从问题描述与分析、解决方案详解到操作示例与注意事项等多个方面进行了全面阐述。通过本文的介绍和指导,用户可以快速定位问题根源并采取有效措施进行解决,从而提升文档编辑效率和美观性。未来,随着WPS软件的不断升级和优化,相信会有更多便捷高效的功能被添加到软件中。同时,用户也需要不断学习和探索新的操作技巧和方法,以适应不断变化的办公需求。希望本文能够为广大WPS用户提供有益的参考和帮助,共同推动办公效率的提升和发展。 阅读详情

相关推荐

自制非接触式静电探测仪:从振动电容原理到微弱信号检测实践

微弱信号检测是电子测量领域的核心挑战之一,尤其在需要避免物理接触或防止干扰的场景中。其基本原理在于将难以直接获取的微小物理量(如电流、电压)通过传感器转换为电信号,再经过放大、滤波等处理进行提取。锁相放大技术是解决这一问题的关键手段,它利用参考信号与目标信号的同步性,从强噪声背景中恢复出有效信息,极大提升了信噪比和测量灵敏度。这项技术的工程价值在于实现了对纳安级电流、微伏级电压等高难度参数的可靠测量。在静电防护、材料表面电位分析、生物电信号采集等应用场景中,非接触式测量需求广泛。本文聚焦的基于振动电容原理的

weixin_32349093的博客 274

微软100题15题(输入一颗二元查找树,将该树转换为它的镜像)

1scala版本 package ms /** * 第15题(树): 题目:输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点。 用递归和循环两种方法完成树的镜像转换。 例如输入: 8 / / 6 10 // // 5 7 9 11 输出: 8 / / 10 6 // // 11 9 7 5 定义二元查找树的结点

mark's technic world 705

手把手教你:如何为自制的STM32H7飞控板适配PX4固件(基于NuttX)

本文详细介绍了如何为自制的STM32H7飞控板适配PX4固件,基于NuttX系统进行移植。从硬件设计规范到软件环境配置,再到PX4固件的移植与调试,提供了完整的实战指南。特别分享了如何复用FMU-v6u参考设计以节省开发时间,并解决了常见问题,帮助开发者快速实现高性能飞控系统的搭建。

weixin_27697385的博客 475

输入一棵二元查找树, 将该树转换为它的镜像

要求使用递归和循环两种方法. 二叉树节点定义: typedef struct BSTreeNode{ int m_nValue; struct BSTreeNode * m_pLeft; struct BSTreeNode * m_pRight; }BSTreeNode; 一.递归 void reverseBTree(BSTreeNode * bst

皓月的博客 858

基于ESP32与PCM5102的WiFi无损音频传输系统设计与实现

本文详细介绍基于ESP32与PCM5102的WiFi无损音频传输系统设计与实现。通过I2S接口直接传输PCM数据,避免SRC重采样,实现真正的HIFI级音质。涵盖硬件连接、软件架构、网络传输优化及实际音质对比,为音频爱好者提供高性价比的无损无线音频解决方案。

rnn9storyteller的博客 949

Python爬虫:爬取健身平台运动数据(跑步、骑行轨迹)

通过分析这些运动数据,用户能够了解自己的运动趋势、运动成绩,并作出相应的调整。通过使用Strava的API,我们成功地获取了用户的运动活动信息和运动轨迹数据,并进行了存储与可视化。Strava的API提供了丰富的数据接口,能够通过OAuth2认证获取用户的运动数据,包括历史数据、运动轨迹等信息。Strava的API还提供了获取活动轨迹数据的接口,返回的数据格式通常是GeoJSON格式,适用于地图可视化。随着大数据技术的发展,运动数据的分析和可视化为个人健康管理、运动训练计划的优化等提供了强大的支持。

2201_76125261的博客 1076

程序员100题(15)-求二元查找树的镜像

题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。 例如输入:      8     /  \   6      10  /\       /\ 5  7    9   11 输出:       8     /  \   10    6  /\      /\ 11

lihappy999的专栏 434

23、资产分散化与有效前沿:投资组合优化的核心策略

本文深入探讨了现代投资组合理论的核心概念,包括分散投资的重要性、均值-方差优化框架以及有效前沿的构建与应用。通过案例分析和数学模型,阐述了如何通过科学方法降低投资组合风险并实现最优风险收益权衡。文章还介绍了实际应用中的求解方法与决策流程,为投资者提供系统的投资组合优化指导。

cc789的博客 114

输入一颗二元查找树,将该树转换为它的镜像

微软面试题,难度系数中下,题目描述如下: 题目:输入一颗二元查找树,将该树转换为它的镜像,  即在转换后的二元查找树中,左子树的结点都大于右子树的结点。  用递归和循环两种方法完成树的镜像转换。  例如输入:       8     /     \    6     10   / \      /  \         5   7  9   11  输出:

pediy_yuhan的专栏 1512

Pydoll浏览器自动化框架教程

让浏览器自动化回归本质。不再纠缠驱动兼容、不再手动处理验证码、不再因为请求和 UI 分裂而头疼。如果你经常做 Web 自动化、爬虫或者测试,不妨试试 Pydoll。也别忘了给项目点个 ⭐,让作者知道有人喜欢这个工具。👉GitHub 地址。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 204

RFC-only 与 SAProuter 场景下,让 Claude 真正参与 SAP ABAP 开发

SAP ABAP 开发这几年正在出现一个很有意思的变化。过去我们说开发工具,脑子里大多是 SE80、SE38、SE24、SEGW、Eclipse ADT,再往后是 BAS、VS Code、abapGit、ATC、CI/CD。现在又多了一层,Claude Code、Claude Desktop 这类 AI 编程助手开始通过 MCP 进入开发现场,不只是写一段示例代码,而是能读系统里的 ABAP 对象、搜索包、改源码、跑检查、辅助重构。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1620
上一篇: 排序数组中和为给定值的两个数字
下一篇: 从上往下遍历二元树(层次遍历二元树)
tanyujing
博客等级 码龄18年 135粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值