博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法-树-对称的二叉树
阅读量:3962 次
发布时间:2019-05-24

本文共 1922 字,大约阅读时间需要 6 分钟。

在这里插入图片描述

在这里插入图片描述

方法一 递归

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode() {} *     TreeNode(int val) { this.val = val; } *     TreeNode(int val, TreeNode left, TreeNode right) { *         this.val = val; *         this.left = left; *         this.right = right; *     } * } */class Solution {
public boolean isSymmetric(TreeNode root) {
return help(root, root); } //q,p是该节点的左右 子节点 public boolean help(TreeNode p, TreeNode q) {
if(p == null && q == null) {
return true; } if(p == null || q == null) {
return false; } return p.val == q.val && help(p.left, q.right) && help(p.right, q.left); }}

方法二 迭代

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode() {} *     TreeNode(int val) { this.val = val; } *     TreeNode(int val, TreeNode left, TreeNode right) { *         this.val = val; *         this.left = left; *         this.right = right; *     } * } */class Solution {
public boolean isSymmetric(TreeNode root) {
return help(root, root); } public boolean help(TreeNode p, TreeNode q) {
Queue
queue = new LinkedList<>(); queue.offer(p); queue.offer(q); while(!queue.isEmpty()) {
TreeNode u = queue.poll(); TreeNode v = queue.poll(); if(u == null && v == null) {
continue;//这里不能直接返回 还需要接着判断队列的其他元素 } if(u == null || v == null) {
return false; } if(p.val != q.val) {
return false; } queue.offer(u.left); queue.offer(v.right); queue.offer(u.right); queue.offer(v.left); } return true; }}

转载地址:http://imhzi.baihongyu.com/

你可能感兴趣的文章
最重要的 12个 J2EE 最佳实践
查看>>
通过Java Swing看透MVC设计模式
查看>>
Java 理论与实践: 关于异常的争论
查看>>
编写高效的线程安全类
查看>>
提高Java代码可重用性的三个措施
查看>>
编写跨平台Java程序注意事项
查看>>
富人和穷人的12个经典差异
查看>>
java 注意事项[教学]
查看>>
MetaWeblogAPI测试
查看>>
软件配置管理概念-1,介绍
查看>>
软件配置管理概念-2,用户角色
查看>>
软件配置管理概念-3,CM系统的概念
查看>>
JSP/Servlet应用程序优化八法
查看>>
人生必修的181条佛理
查看>>
The Most Widely Used Java Libraries
查看>>
简单在单机使用apache-james(开源邮件服务器)
查看>>
lsof 快速起步
查看>>
跨平台Java程序注意事项
查看>>
Python字符与数字的相互转换
查看>>
C 指针解读
查看>>