Chinaunix首页 | 论坛 | 博客
  • 博客访问: 120635
  • 博文数量: 53
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 620
  • 用 户 组: 普通用户
  • 注册时间: 2014-08-24 16:22
文章存档

2014年(53)

我的朋友

分类: C/C++

2014-12-06 15:30:01

Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).

For example, this binary tree is symmetric:

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


But the following is not:

    1
   / \
  2   2
   \   \
   3    3


判断一棵树是不是镜像。关于树,直接的想法就是递归,但是这个题目从单个树来看是无法递归的,但是可以用两个树来递归。


  1. bool f(TreeNode * l, TreeNode * r){
  2.     if(l==NULL && r==NULL)
  3.         return true;
  4.     if(l==NULL || r==NULL)
  5.         return false;
  6.     return l->val==r->val && f(l->left,r->right)&&
  7.         f(l->right,r->left);
  8. }
  9. bool isSymmetric(TreeNode *root) {
  10.     if(root==NULL)
  11.         return true;
  12.     return f(root->left,root->right);
  13. }



阅读(853) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~