这题在剑指Offer上有,思路也是采用书上的。使用两个遍历顺序,两个顺序是对称的。这样就是实现了判断对称与否,一个使用先序,一个使用先序中先遍历右子树。
代码如下:
bool isSymmetric(TreeNode *root) {
return isSymmetric(root, root);
}
bool isSymmetric(TreeNode *root1, TreeNode *root2) {
if (root1 == NULL && root2 == NULL)
return true;
if (root1 == NULL || root2 == NULL || (root1->val != root2->val))
return false;
return isSymmetric(root1->left, root2->right) && isSymmetric(root1->right, root2->left);
}