Leetcode-101. Symmetric Tree
来源:互联网 发布:视频采集源码 编辑:程序博客网 时间:2024/06/06 19:49
解题思路:返回值为bool,即是判断某个条件是否满足的题目。其中左子树和右子树对称的条件:
· 两个节点值相等,或者都为空
· 左节点的左子树和右节点的右子树对称
· 左节点的右子树和右节点的左子树对称
则不满足以上条件的情况应返回false.
解法一:
class Solution {public: bool isSymmetric(TreeNode* root) { if(!root) return true; queue<TreeNode *> qt1,qt2; qt1.push(root->left); qt2.push(root->right); while(!qt1.empty() && !qt2.empty()){ TreeNode *left = qt1.front(); qt1.pop(); TreeNode *right = qt2.front(); qt2.pop(); if(!left && !right) continue; if(!left || !right) return false; if(left->val != right->val) return false; qt1.push(left->left); qt2.push(right->right); qt1.push(left->right); qt2.push(right->left); } return true; }};
解法二:
class Solution {public: bool isSymmetric(TreeNode* root) { if(!root) return true; return issym(root->left,root->right); } bool issym(TreeNode *left,TreeNode *right){ if(!left && !right) return true; if(!left || !right) return false; if(left->val != right->val) return false; return issym(left->left,right->right) && issym(left->right,right->left); }};
注:
要比较的两边有三种对称情况:
1.两边皆为空
2.两边皆有一个节点
3.两边皆有两个节点
0 0
- LeetCode 101. Symmetric Tree
- [LeetCode]101.Symmetric Tree
- 【LeetCode】101.Symmetric Tree
- [Leetcode] 101. Symmetric Tree
- LeetCode --- 101. Symmetric Tree
- [leetcode] 101.Symmetric Tree
- LeetCode : 101. Symmetric Tree
- [leetcode]101.Symmetric Tree
- Leetcode 101. Symmetric Tree
- 101. Symmetric Tree LeetCode
- [LeetCode]101. Symmetric Tree
- [LeetCode]101. Symmetric Tree
- [LeetCode]101. Symmetric Tree
- leetcode 101. Symmetric Tree
- LeetCode#101. Symmetric Tree
- Leetcode 101. Symmetric Tree
- Leetcode 101. Symmetric Tree
- LeetCode *** 101. Symmetric Tree
- 数据持久层DAO的建立和使用,实现数据库的连接
- Python Itertools
- 大数据下多线程对文件的检索
- Linux 下的一些常用命令
- Objective-C 通知(NSNotification)及实现原理
- Leetcode-101. Symmetric Tree
- 你不能不知道到的Hook!
- 本地通知 NotificationCenter
- (函数题)4-1 简单输出整数
- ZOJ3332-Strange Country II
- VBS数据类型转换小技巧
- 神经网络与深度学习(二又二分之一)cpp-二的补充
- 用2的幂表示可多项选择的状态
- flume插件开发及部署