Leetcode Symmetric Tree
Symmetric Tree
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
For example, this binary tree is symmetric:
1 / \ 2 2 / \ / \ 3 4 4 3
But the following is not:
1 / \ 2 2 \ \ 3 3
Note:
Bonus points if you could solve it both recursively and iteratively.
confused what "{1,#,2,3}"
means? > read more on how binary tree is serialized on OJ.
利用递归法,可以很轻松解决的问题。
增加一个adaptor接口函数就可以了,
搞清楚对称的判断方法:每一个左子树与右子树的节点相等,然后是左子树的右子树和右子树的左子树相等, 有点拗口,不过画图就很好理解了。
bool isSymmetric(TreeNode *root) { if (!root) return true; return symmetric(root->left, root->right); } bool symmetric(TreeNode *t1, TreeNode *t2) { if (!t1 && !t2) return true; if (!t1 && t2 || t1 && !t2) return false; if (t1->val != t2->val) return false; return symmetric(t1->left, t2->right) && symmetric(t1->right, t2->left); }
posted on 2014-01-07 13:49 love so much 阅读(137) 评论(0) 编辑 收藏 举报