【剑指offer】面试题28:对称的二叉树
来源:互联网 发布:网络利弊议论文 编辑:程序博客网 时间:2024/05/19 01:08
完整代码地址
完整代码地址
题目
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
思路
看下面的代码注释
代码
/** * 题目: * 请实现一个函数,用来判断一颗二叉树是不是对称的。 * 注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 * * 思路: * 从根节点的左右两个子节点出发 * 左子节点采用 根左右 的方式遍历 * 右子节点采用 左根右 的方式遍历 * 每遍历一次就进行比较,一旦出现不同的值就表示不是对称的 * * 测试(代码复杂,直接用脑袋测试了): * 1.正常的对称二叉树(功能测试) * 2.正常的非对称二叉树(功能测试) * 3.只有头结点的二叉树(边界测试) * 4.输入的头结点为null(极端测试) * * PS:我在提交牛客网的时候,如果头结点为null,应该输出true, * 我当时输出了false,这个让我挂了一次 * * @author peige */public class _28_SymmertricalBinaryTree { public static class TreeNode { public int val = 0; public TreeNode left = null; public TreeNode right = null; public TreeNode(int val) { this.val = val; } } public boolean isSymmetrical(TreeNode pRoot) { if(pRoot == null) return true; return isSymmetrical(pRoot.left, pRoot.right); } /** * root1使用根左右遍历 * root2使用根右左遍历 */ public boolean isSymmetrical(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; return isSymmetrical(root1.left, root2.right) && isSymmetrical(root1.right, root2.left); }}
测试
太复杂了,直接用脑袋测试,测试的思路看代码注释
阅读全文
0 0
- 【剑指offer】面试题28:对称的二叉树
- 剑指offer--面试题28:对称的二叉树
- 【剑指Offer学习】【面试题59:对称的二叉树】
- 剑指offer-面试题59:对称的二叉树
- 剑指offer--面试题59:对称的二叉树
- (剑指Offer)面试题59:对称的二叉树
- 剑指offer-面试题59-对称的二叉树
- 剑指offer 面试题59 对称的二叉树
- (剑指Offer)面试题59:对称的二叉树
- 剑指offer面试题[59]-对称的二叉树
- 剑指Offer面试题59:对称二叉树 Java实现
- 【剑指Offer】面试题59:对称二叉树
- 《剑指Offer》学习笔记--面试题59:对称的二叉树
- 剑指offer面试题59 对称的二叉树(java实现)
- 剑指offer——面试题59:对称的二叉树
- 面试题59:对称的二叉树
- 面试题66:对称的二叉树
- 面试题59:对称的二叉树
- 17_7_21 二叉树的层序遍历
- IO操作练习实例——文件的创建
- D_D系统构建-MBR(7)加载loader文件代码filesystem.inc解析
- Head First Python(中文版)pdf
- 设计模式之代理模式
- 【剑指offer】面试题28:对称的二叉树
- c语言数据结构复习(一)
- git--配置别名
- Kubernetes核心原理(二)之Controller Manager
- Spring 3.x 企业应用开发实战pdf
- 属性节点的属性和方法
- ls命令的自己实现
- python web开发学习实录pdf
- 事务回滚