[LeetCode] Symmetric Tree(对称镜像树的判别)
2014-12-23 16:54
387 查看
一、问题描述
给定一个二叉树,判断其是否是它自己的一个镜像,即左右节点的值是对称相等的。比如下面这一个二叉树就是镜像树。
但是下面这一个就不是镜像树。
二、解决方法
递归判断:
1. 若根节点为空,则该树是镜像树;
2. 若根节点不为空,则判断其左右子树的情况:
1)若左右子树均为空,则可以判断该树是镜像树;
2)若左右子树其中一个为空,则该树不是镜像树;
3)若左右子树均不为空,则先判断左右节点的值是否对应相等。若不等,则该树不为镜像树;若相等,则递归判断左子树左节点和右子树右节点以及左子树右节点和右子树左节点各自是否是镜像树。其中任何一个不为镜像树,则可以判断出整个二叉树也不为镜像树。直到遍历完整个二叉树为止。
三、C++代码
给定一个二叉树,判断其是否是它自己的一个镜像,即左右节点的值是对称相等的。比如下面这一个二叉树就是镜像树。
1 / \ 2 2 / \ / \ 3 4 4 3
但是下面这一个就不是镜像树。
1 / \ 2 2 \ \ 3 3
二、解决方法
递归判断:
1. 若根节点为空,则该树是镜像树;
2. 若根节点不为空,则判断其左右子树的情况:
1)若左右子树均为空,则可以判断该树是镜像树;
2)若左右子树其中一个为空,则该树不是镜像树;
3)若左右子树均不为空,则先判断左右节点的值是否对应相等。若不等,则该树不为镜像树;若相等,则递归判断左子树左节点和右子树右节点以及左子树右节点和右子树左节点各自是否是镜像树。其中任何一个不为镜像树,则可以判断出整个二叉树也不为镜像树。直到遍历完整个二叉树为止。
三、C++代码
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool isSymmetric(TreeNode *root) { if(!root) return true; if(!root->left&&!root->right) return true; else return isSymmetric(root->left,root->right); } bool isSymmetric(TreeNode *leftNode,TreeNode *rightNode) { if(!leftNode&&!rightNode) return true; else if((!leftNode&&rightNode)||(leftNode&&!rightNode)) return false; else return leftNode->val==rightNode->val&&isSymmetric(leftNode->left,rightNode->right)&&isSymmetric(leftNode->right,rightNode->left); } };
相关文章推荐
- leetcode_Symmetric Tree_判断二叉树镜像对称_easy_方法
- LeetCode 101. Symmetric Tree(对称的树)
- Symmetric Tree[LeetCode]对称二叉树
- leetcode 二叉树是否为镜像对称
- [LeetCode] Symmetric Tree 判断二叉树是否为对称二叉树
- Leetcode 101. Symmetric Tree 判断二叉树是否对称,注意写在两个方法中,递归时注意空的判断
- 【leetcode 二叉树对称判断】Symmetric Tree
- Leetcode#101. Symmetric Tree(对称树)
- Symmetric Tree 对称镜像树 @LeetCode
- Leetcode 101 Symmetric Tree 判断一棵树是否对称
- LeetCode:Symmetric Tree(镜像二叉树)
- [leetcode]Symmetric Tree (对称树 C语言实现)
- [Leetcode] Symmetric tree 对称二叉树
- 【LeetCode】Symmetric Tree 推断一棵树是否是镜像的
- 【LeetCode题目记录-11】判断二叉树是否是镜像的(对称的)
- 【LeetCode-面试算法经典-Java实现】【101-Symmetric Tree(对称树)】
- LeetCode | Symmetric Tree(镜像树)
- LeetCode(Symmetric Tree)判断二叉树是否是对称的
- leetcode-Symmetric Tree 对称树
- LeetCode 101 Symmetric Tree(对称树)(*)