LeetCode(Symmetric Tree)判断二叉树是否是对称的
2014-04-15 05:25
351 查看
题目要求:
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree is symmetric:
But the following is not:
可以用递归和非递归方式完成,非递归要比递归更容易,效率更高
代码:
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
可以用递归和非递归方式完成,非递归要比递归更容易,效率更高
代码:
class Solution { public: bool isSymmetric(TreeNode *root) { if(root == NULL) return true; return DFS(root->left, root->right); } bool DFS(TreeNode* left, TreeNode* right) { if(left == NULL) return (right == NULL); if(right == NULL) return (left == NULL); if(left->val != right->val) return false; if(!DFS(left->left, right->right)) return false; if(!DFS(left->right, right->left)) return false; return true; } bool NonRecursive(TreeNode* root) { if(root == NULL) return true; queue<TreeNode*> q1; queue<TreeNode*> q2; q1.push(root->left); q2.push(root->right); while(!q1.empty() && !q2.empty()) { TreeNode* node1 = q1.front(); TreeNode* node2 = q2.front(); q1.pop(); q2.pop(); if((node1 == NULL && node2 != NULL) || (node1 != NULL && node2 == NULL)) return false; if(node1 != NULL && node2 != NULL) { if(node1->val != node2->val) return false; q1.push(node1->left); q1.push(node1->right); q2.push(node2->right); q2.push(node2->left); } } return q1.empty() && q2.empty(); } };
相关文章推荐
- Leetcode 101. Symmetric Tree 判断二叉树是否对称,注意写在两个方法中,递归时注意空的判断
- Leetcode-Symmetric Tree——判断二叉树是否对称
- 二叉树系列 - [LeetCode] Symmetric Tree 判断二叉树是否对称,递归和非递归实现
- [LeetCode] Symmetric Tree 判断二叉树是否为对称二叉树
- 二叉树系列 - [LeetCode] Symmetric Tree 判断二叉树是否对称,递归和非递归实现
- [LeetCode] Symmetric Tree 判断二叉树是否为对称二叉树
- leetcode_101. Symmetric Tree 对称树, 判断一棵二叉树是否对称,递归方法
- LeetCode--判断二叉树是否对称
- 【遍历二叉树】09判断二叉树是否关于自己镜像对称【Symmetric Tree】
- leetcode_Symmetric Tree_判断二叉树镜像对称_easy_方法
- 【leetcode 二叉树对称判断】Symmetric Tree
- 【LeetCode101-110】二叉树对称及存储,前序中序遍历生成二叉树,中序后序生成二叉树,数组转化为AVL平衡树,判断二叉树是否平衡
- Leetcode 101 Symmetric Tree 判断一棵树是否对称
- LeetCode-101-Symmetric Tree(判断是否为对称树)
- LeetCode基础--二叉树-判断是否对称
- 判断二叉树是否是水平对称的 Symmetric Tree
- 【LeetCode题目记录-11】判断二叉树是否是镜像的(对称的)
- 101. Symmetric Tree (判断二叉树是否对称)
- 判断二叉树是否为镜像对称
- 判断给定二叉树是否是二叉搜索树(LeetCode: Validate Binary Search Tree)