Symmetric Tree,对称树

问题描述:

Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).

For example, this binary tree [1,2,2,3,4,4,3] is symmetric:

    1
   / \
  2   2
 / \ / \
3  4 4  3

 

But the following [1,2,2,null,3,null,3] is not:

    1
   / \
  2   2
   \   \
   3    3

 

算法分析:和same tree比较像,都可以用递归方法来解决。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class SymmeticTree
{
    public boolean isSymmetric(TreeNode root)
    {
        if (root == null)
        {
            return true;
        }
        return isSymmetric(root.left, root.right);
    }
 
    public boolean isSymmetric(TreeNode left, TreeNode right)
    {
        if (left == null && right == null)
        {
            return true;
        }
        else if ((left == null && right != null)
                || (right == null && left != null) || (left.val != right.val))
        {
            return false;
        }
        else
        {
            return isSymmetric(left.left, right.right)
                    && isSymmetric(left.right, right.left);
        }
    }
}

 

posted @   32ddd  阅读(201)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示