对称的二叉树

题目描述:

请实现一个函数,用来判断一棵二叉树是不是对称的。
如果一棵二叉树和它的镜像一样,那么它是对称的

样例:

如下图所示二叉树[1,2,2,3,4,4,3,null,null,null,null,null,null,null,null]为对称二叉树:
在这里插入图片描述
如下图所示二叉树[1,2,2,null,4,4,3,null,null,null,null,null,null]不是对称二叉树:
在这里插入图片描述

分析:

判断一棵二叉树是否对称,就是看该二叉树和其镜像是否相同。
求二叉树镜像的过程是:前序遍历二叉树,若当前节点的孩子节点不为空,则将二者交换,当交换完所有非叶节点的孩子节点后,就得到了树的镜像。
第一种方法是采用通过对二叉树前序遍历得到的结果和二叉树的镜像前序遍历的结果相比较,这个过程需要将二叉树转换成镜像,如果定义一种遍历方式在原二叉树上操作呢?
前序遍历是先遍历父节点,然后遍历左节点最后右节点。为了判断二叉树是否对称,我们定义对称的前序遍历,比较该二叉树前序遍历和对称前序遍历的结果是否一致。在判断的过程中若二者中值不相等或者只有一个为空则返回false。

    public boolean isSymmetric(TreeNode root) {
        if(isSymmetric(root,root))
        	return true;
        return false;
    }
	public boolean isSymmetric(TreeNode root1,TreeNode root2) {
        if(root1==null&&root2==null)
        	return true;
        if(root1==null||root2==null)
        	return false;
        if(root1.val!=root2.val)
        	return false;
        boolean left=isSymmetric(root1.left,root2.right);
        boolean right=isSymmetric(root1.right,root2.left);
        return left&&right;
    }
    //执行用时 : 2 ms, 在Symmetric Tree的Java提交中击败了89.83% 的用户
	//内存消耗 : 34.6 MB, 在Symmetric Tree的Java提交中击败了88.16% 的用户
//层次遍历
public boolean isSymmetric(TreeNode root) {
		Queue<TreeNode> q=new LinkedList<>();
		Queue<TreeNode> p=new LinkedList<>();
		q.offer(root);
		p.offer(root);
		while(q.size()>0) {
			TreeNode t1=q.poll();
			TreeNode t2=p.poll();
			if(t1==null&&t2!=null||t2==null&&t1!=null)
				return false;
            if(t1!=null&&t2!=null&&t1.val!=t2.val)
                return false;
			if(t1!=null) {
				q.offer(t1.left);
				q.offer(t1.right);
			}
			if(t2!=null) {
				p.offer(t2.right);
				p.offer(t2.left);
			}
		}
		return true;
	}
//执行用时 : 4 ms, 在Symmetric Tree的Java提交中击败了56.61% 的用户
//内存消耗 : 34.4 MB, 在Symmetric Tree的Java提交中击败了92.46% 的用户
内容概要:本文详细探讨了基于MATLAB/SIMULINK的多载波无线通信系统仿真及性能分析,重点研究了以OFDM为代表的多载波技术。文章首先介绍了OFDM的基本原理和系统组成,随后通过仿真平台分析了不同调制方式的抗干扰性能、信道估计算法对系统性能的影响以及同步技术的实现与分析。文中提供了详细的MATLAB代码实现,涵盖OFDM系统的基本仿真、信道估计算法比较、同步算法实现和不同调制方式的性能比较。此外,还讨论了信道特征、OFDM关键技术、信道估计、同步技术和系统级仿真架构,并提出了未来的改进方向,如深度学习增强、混合波形设计和硬件加速方案。; 适合人群:具备无线通信基础知识,尤其是对OFDM技术有一定了解的研究人员和技术人员;从事无线通信系统设计与开发的工程师;高校通信工程专业的高年级本科生和研究生。; 使用场景及目标:①理解OFDM系统的工作原理及其在多径信道环境下的性能表现;②掌握MATLAB/SIMULINK在无线通信系统仿真中的应用;③评估不同调制方式、信道估计算法和同步算法的优劣;④为实际OFDM系统的设计和优化提供理论依据和技术支持。; 其他说明:本文不仅提供了详细的理论分析,还附带了大量的MATLAB代码示例,便于读者动手实践。建议读者在学习过程中结合代码进行调试和实验,以加深对OFDM技术的理解。此外,文中还涉及了一些最新的研究方向和技术趋势,如AI增强和毫米波通信,为读者提供了更广阔的视野。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值