JZ58 对称的二叉树***
题目描述
请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
思路
《剑指offer》上的思路很清晰
定义一种对称前序遍历方法(根-右-左),如果前序遍历序列和对称前序遍历序列相同,那么这就是个对称二叉树
但是需要注意一个,这里我们在比较的时候需要带上空节点
递归方法
(自己想的话可能很难想到)
代码
class Solution { public: bool isSymmetrical(TreeNode* pRoot) { return isSymmetrical(pRoot,pRoot); } bool isSymmetrical(TreeNode* pRoot1,TreeNode* pRoot2) { if(pRoot1==NULL&&pRoot2==NULL) return true; if(pRoot1==NULL||pRoot2==NULL) return false; if(pRoot1->val!=pRoot2->val) return false; return isSymmetrical(pRoot1->left,pRoot2->right)&&isSymmetrical(pRoot1->right,pRoot2->left); } };