Q59:对称的二叉树
来源:互联网 发布:羽原大魔王知乎 编辑:程序博客网 时间:2024/06/04 23:07
public class Q59对称的二叉树 { /** * 题目:对称的二叉树 * 题目说明:请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它就是对称的。 * 解题思路:要判断一棵二叉树是不是对称的,要先判断它的左右子树是不是对称的,如果对称则判断左子树的右结点和右子树的左结点是不是对称的,依次类推。 * 因此可以利用递归来实现。例如二叉树的一种遍历方式为前序遍历(根,左,右)则定义对称的遍历方式为对称前序遍历方式(根,右,左) */ public static void main(String[] args) { BinaryTreeNode root = new BinaryTreeNode(); BinaryTreeNode node1 = new BinaryTreeNode(); BinaryTreeNode node2 = new BinaryTreeNode(); BinaryTreeNode node3 = new BinaryTreeNode(); BinaryTreeNode node4 = new BinaryTreeNode(); BinaryTreeNode node5 = new BinaryTreeNode(); BinaryTreeNode node6 = new BinaryTreeNode(); root.leftNode = node1; root.rightNode = node2; node1.leftNode = node3; node1.rightNode = node4; node2.leftNode = node5; node2.rightNode = node6; root.value = 8; node1.value = 6; node2.value = 6; node3.value = 5; node4.value = 7; node5.value = 7; node6.value = 5; Q59对称的二叉树 test = new Q59对称的二叉树(); System.out.println(test.isSymmetric(root)); } public static boolean isSymmetric(BinaryTreeNode root){ return isSymmetrical(root, root); } public static boolean isSymmetrical(BinaryTreeNode root1,BinaryTreeNode root2){ if(root1 == null && root2 == null){//当根结点均为空时,二叉树对称 return true; } if(root1 == null || root2 == null){//其中有一个为空,则不对称 return false; } if(root1.value != root2.value){//两个结点都存在,如果值不同,则不对称 return false; } return isSymmetrical(root1.leftNode, root2.rightNode) && isSymmetrical(root1.rightNode, root2.leftNode);//递归左右子树进行比较 }}
0 0
- Q59:对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- 对称的二叉树
- python opencv 进行简单几何变换
- 移动端开发需要注意的一些事情
- JAVA 常用字符串用法
- 客户注册页--手机号验证--失败篇
- Overfencing_usaco2.4.2_bfs
- Q59:对称的二叉树
- Mysql MATCH() AGAINST() (MATCH+AGAINST)
- java Swing 自定义实现 下拉选择框,匹配输入提示
- JVM内存模型
- Convolutional Neural Networks for Visual Recognition
- 设计模式 - 工厂模式
- J2SE之异常处理
- 《集体智慧编程》笔记2.2---第二章--欧几里得距离和皮尔森相关系数代码(.py)
- 图片轮播系列1-旋转木马(使用JS原生数组方式实现)