博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer 判断树是不是对称的
阅读量:6005 次
发布时间:2019-06-20

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

剑指offer 判断树是不是对称的<?xml version="1.0" encoding="UTF-8"?>

递归是很常见的实现方式,最简便。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
struct TreeNode {
    
int val;
    
struct TreeNode *left;
    
struct TreeNode *right;
    
TreeNode(int x) :
            
val(x), left(NULL), right(NULL) {
    
}
};
*/
class
Solution {
public
:
    
bool isSymmetrical(TreeNode* pRoot)
    
{
        
if
(!pRoot) 
return
true
;
        
return
compRoot(pRoot -> left, pRoot -> right);
    
}
    
//递归方法
    
bool compRoot(TreeNode* lroot, TreeNode* rroot){
        
if
(!lroot) 
return
(NULL == rroot);
        
if
(NULL == rroot) 
return
false
;
        
if
(lroot -> val != rroot -> val) 
return
false
;
        
return
(compRoot(lroot -> left, rroot -> right) && compRoot(lroot -> right, rroot -> left));
    
}
 
 
};

迭代版本
使用栈stack
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*
struct TreeNode {
    
int val;
    
struct TreeNode *left;
    
struct TreeNode *right;
    
TreeNode(int x) :
            
val(x), left(NULL), right(NULL) {
    
}
};
*/
class
Solution {
public
:
    
bool isSymmetrical(TreeNode* pRoot)
    
{
        
if
(pRoot==NULL)
return
true
;
        
stack<TreeNode *> s;
        
s.push(pRoot->left);
        
s.push(pRoot->right);
        
while
(!s.empty()){
            
auto p=s.top();s.pop();
            
auto q=s.top();s.pop();
            
if
(!p && !q)
continue
;
//p,q都是NULL,则继续
            
if
(!p || !q)
return
false
;
// p,q中有一个是null,另一个不是,false
            
if
(p->val !=q->val)
return
false
;
// p,q都不是null,但是值不相等,false
             
            
s.push(p->left);
            
s.push(q->right);
             
            
s.push(p->right);
            
s.push(q->left);               
        
}       
        
return
true
;
    
}
};

转载于:https://www.cnblogs.com/zhxshseu/p/5285096.html

你可能感兴趣的文章
高性能迷你React框架anu在低版本IE的实践
查看>>
windows中用cmd 删除文件夹以及文件夹里面的所有内容
查看>>
中国在两年内赶超美国AI?李开复:不一定
查看>>
2018年OpenStack用户调查报告出炉:Kubernetes仍居首
查看>>
Eclipse基金会发布Eclipse Photon IDE
查看>>
纯css实现左右横线,文字自适应居中效果
查看>>
唯品会HDFS性能挑战和优化实践
查看>>
JavaScript 设计模式
查看>>
Java EE供应商和伦敦Java用户组宣布新的MicroProfile
查看>>
PostgreSQL中的大容量空间探索时间序列数据存储
查看>>
敏捷制造:并不是你想像的矛盾体
查看>>
jQuery选择器和事件
查看>>
十、syslog日志与loganalyzer日志管理
查看>>
Python多进程并发写入PostgreSQL数据表
查看>>
mysql 优化
查看>>
2.4 salt grains与pillar jinja的模板
查看>>
简单的验证码程序
查看>>
MySQL主从(介绍,配置主机,配置从机,测试主从同步)
查看>>
不同版本的outlook客户端配置Office 365 exchange online帐户需要安装的补丁
查看>>
Java服务器-resin
查看>>