博客
关于我
剑指 Offer 28. 对称的二叉树
阅读量:366 次
发布时间: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/

你可能感兴趣的文章
KeepAlived介绍、配置示例、KeepAlived配置IPVS、调用脚本进行监控
查看>>
Scala集合-数组、元组
查看>>
04 程序流程控制
查看>>
C++&&STL
查看>>
子集(LeetCode 78)
查看>>
一篇解决JMM与volatile详解(二)
查看>>
无锁并发框架-Disruptor的使用(二)
查看>>
codeforces The Eternal Immortality 题解
查看>>
微信js-sdk使用简述(分享,扫码功能等)
查看>>
selenium 的介绍和爬取 jd数据
查看>>
mxsrvs支持thinkphp3.2伪静态
查看>>
mui HTML5 plus 下载文件
查看>>
c++中ifstream及ofstream超详细说明
查看>>
c++中explicit和mutable关键字探究
查看>>
c语言结构体字节对齐详解
查看>>
Python 知识点总结篇(3)
查看>>
vuex modules
查看>>
sleep、wait、yield、join——简介
查看>>
web项目配置
查看>>
基于单片机简易信号误差分析设计-全套资料
查看>>