判断一个二叉树是否是对称的
非递归的实现方式可以用一个堆栈,第一次遍历压入栈,然后每次pop出来一个和从右侧遍历的结果比较
https://leetcode.com/problems/symmetric-tree/solution/
// 101. Symmetric Tree 分治
bool solution::isSymmetric(TreeNode * root)
{
return isSymmetricBoth(root, root);
}
bool isSymmetricBoth(TreeNode * p, TreeNode * q)
{
if (p == NULL && q == NULL) return true;
if (p == NULL || q == NULL) return false;
return (p->val == q->val) && isSymmetricBoth(p->left, q->right) && isSymmetricBoth(p->right, q->left);
}