您的位置:首页 > 其它

【Leetcode】Symmetric Tree

2015-11-21 15:19 323 查看
题目链接:https://leetcode.com/problems/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.

思路:

注意我在递归中保存结果的方式,跟Kth Smallest Element in a BST 算法2和Balanced Binary
Tree 中是一样的。

基本框架是:

boolean result = true;
public boolean recur(TreeNode root){
if(root!=null){
if(satisfy a condition){
result = false;
}
recur(root.left);
recur(root.right);
}
return result;
}


算法:

public boolean isSym(TreeNode p, TreeNode q) {
if (p == null && q == null) {//都为空
return true;
}else if (p == null || q == null) {//有一个不为空
result = false;
}else if (p.val == q.val) {
isSym(p.left, q.right);//注意对称
isSym(p.right, q.left);
} else {
result = false;
}
return result;
}

public boolean isSymmetric(TreeNode root) {
if (root == null) {
return true;
}
if (root.left == null && root.right == null) { //单结点
return true;
}
if (root.left == null || root.right == null) {//不对称
return false;
}
return isSym(root.left, root.right);
}

boolean result = true;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: