程序员面试金典--对称的二叉树
题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
解释: 左子树的左 对应 右子树的右, 左子树的右 对应 右子树的左。
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; */ class Solution { public: bool Judge(TreeNode *lf, TreeNode *rg){ if(lf == NULL && rg == NULL){ return true; }else if(lf == NULL || rg == NULL){ return false; } if(lf->val != rg->val){ return false; } return Judge(lf->left, rg->right) && Judge(lf->right, rg->left); } bool isSymmetrical(TreeNode* pRoot) { if(pRoot == NULL){ return true; }else if(pRoot->left == NULL && pRoot->right==NULL){ return true; } return Judge(pRoot->left, pRoot->right); } };