博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【LeetCode】101 - Symmetric Tree
阅读量:5817 次
发布时间:2019-06-18

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

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

 

Note:Bonus points if you could solve it both recursively and iteratively.

OJ's Binary Tree Serialization:

The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.

Here's an example:

1  / \ 2   3    /   4    \     5

The above binary tree is serialized as "{1,2,3,#,#,4,#,#,5}".

Solution 1: 递归,left对应right,left->left对应right->right,left->right对应right->left

1 /** 2  * Definition for a binary tree node. 3  * struct TreeNode { 4  *     int val; 5  *     TreeNode *left; 6  *     TreeNode *right; 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8  * }; 9  */10 class Solution {11 public:12     bool isSymmetric(TreeNode* root) {13         if(!root)return true;14         return isSymTree(root->left,root->right);15     }16     bool isSymTree(TreeNode *p,TreeNode *q){17         if(!isSameNode(p,q))18             return false;19         else if(!p&&!q)20             return true;21         else22             return isSymTree(p->left,q->right) && isSymTree(p->right,q->left);23     }24     bool isSameNode(TreeNode *p,TreeNode *q){25         if(!p&&!q)      //必需加上这个判断条件,否则若p、q为空下面的->val会运行时错误26             return true;27         else if((!p&&q)||(p&&!q)||(p->val!=q->val))     //利用||的短路效应避免运行时错误28             return false;29         return true;30     }31 };

Solution 2 :非递归,待续

转载于:https://www.cnblogs.com/irun/p/4719686.html

你可能感兴趣的文章
asp.net怎样在URL中使用中文、空格、特殊字符
查看>>
路由器发布服务器
查看>>
实现跨交换机VLAN间的通信
查看>>
jquery中的data-icon和data-role
查看>>
python例子
查看>>
环境变量(总结)
查看>>
ios之UILabel
查看>>
Java基础之String,StringBuilder,StringBuffer
查看>>
1月9日学习内容整理:爬虫基本原理
查看>>
安卓中数据库的搭建与使用
查看>>
AT3908 Two Integers
查看>>
渐变色文字
查看>>
C++ 0X 新特性实例(比较常用的) (转)
查看>>
node生成自定义命令(yargs/commander)
查看>>
各种非算法模板
查看>>
node-express项目的搭建并通过mongoose操作MongoDB实现增删改查分页排序(四)
查看>>
PIE.NET-SDK插件式二次开发文档
查看>>
如何创建Servlet
查看>>
.NET 设计规范--.NET约定、惯用法与模式-2.框架设计基础
查看>>
win7 64位+Oracle 11g 64位下使用 PL/SQL Developer 的解决办法
查看>>