博客
关于我
剑指 Offer 28. 对称的二叉树
阅读量:367 次
发布时间:2019-03-05

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

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

例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

1   / \  2   2 / \ / \3  4 4  3

但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:

1   / \  2   2   \   \   3    3

示例 1:

输入:root = [1,2,2,3,4,4,3]

输出:true
示例 2:

输入:root = [1,2,2,null,3,null,3]

输出:false

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {   public:    bool compare(TreeNode *left,TreeNode *right)    {           if(!left&&!right)return true;        if(left == NULL || right == NULL || left->val!=right->val)return false;        return compare(left->left,right->right)&&compare(left->right,right->left);    }    bool isSymmetric(TreeNode* root) {           return root == NULL ? true : compare(root->left,root->right);    }};

时间复杂度 O(N) : 最多调用 N/2次 compare() 方法。

空间复杂度 O(N) : 最坏情况,二叉树退化为链表,系统使用 O(N) 大小的栈空间。

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

你可能感兴趣的文章
koa2 中间件里面的next到底是什么
查看>>
在create-react-app创建的项目下允许函数绑定运算符
查看>>
博客园新闻频道开始公开测试
查看>>
评论表聚集索引引起的评论超时问题
查看>>
博客园上海俱乐部4月份活动通知邀请函已经发出!
查看>>
上周热点回顾(5.24-5.30)
查看>>
Internet Explorer 10 专题上线
查看>>
云计算之路-阿里云上:0:25~0:40网络存储故障造成网站不能正常访问
查看>>
网站故障公告1:使用阿里云RDS之后一个让人欲哭无泪的下午
查看>>
上周热点回顾(12.31-1.6)
查看>>
上周热点回顾(1.21-1.27)
查看>>
上周热点回顾(6.3-6.9)
查看>>
上周热点回顾(8.12-8.18)
查看>>
【故障公告】升级阿里云 RDS SQL Server 实例故障经过
查看>>
蹒跚来迟:新版博客后台上线公测
查看>>
上周热点回顾(9.16-9.22)
查看>>
上周热点回顾(11.4-11.10)
查看>>
[网站公告]11月26日00:00-04:00阿里云RDS升级
查看>>
[网站公告]又拍云API故障造成图片无法上传(已恢复)
查看>>
上周热点回顾(12.16-12.22)
查看>>