前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >对称的二叉树

对称的二叉树

作者头像
一份执着✘
发布2018-06-04 16:55:18
2910
发布2018-06-04 16:55:18
举报
文章被收录于专栏:赵俊的Java专栏赵俊的Java专栏

题意

请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

样例

代码语言:javascript
复制
A). 3               
   / \
  1   1
 / \ / \
6  4 4  6         

B). 3
   / \
  1   2
 / \ / \
7  4 5  6 

A 与 B 在结构上都是对称的,但是本题的题意是指也对应,所以 A 树是一颗对称二叉树,B 树不是一颗对称的二叉树。

思路

观察上方的样例可得结论:

  • 根节点的左右节点的值是相同的
  • 除根节点外,某节点的右子树与兄弟节点的左子树的值相同
  • 除根节点外,某节点的左子树与兄弟节点的右子树的值相同

代码实现

代码语言:javascript
复制
/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    boolean isSymmetrical(TreeNode pRoot)
    {
        if (pRoot == null) {
            return true;
        }
        
        return fun(pRoot.left, pRoot.right);
        
    }
    boolean fun(TreeNode n1, TreeNode n2) {
        if (n1 == null && n2 == null){
            return true;
        }
        
        if (n1 != null && n2 != null) {
            return n1.val == n2.val && fun(n1.left, n2.right) && fun(n1.right, n2.left);
        }
        
        return false;
    }
    
}

原题地址

牛客网:对称的二叉树

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-08-282,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题意
  • 样例
  • 思路
  • 代码实现
  • 原题地址
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档