symmetric-tree Java code

来源:互联网 发布:大众网络报 微信 编辑:程序博客网 时间:2024/05/15 23:52

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.
OJ’s Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where ‘#’ signifies a path terminator where no node exists below.
Here’s an example:
1
/ \
2 3
/
4
\
5
The above binary tree is serialized as”{1,2,3,#,#,4,#,#,5}”.

/** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public boolean isSymmetric(TreeNode root) {    if(root==null){            return true;        }        return same(root.left,root.right);    }    public boolean same(TreeNode l,TreeNode r){       if(l==null&&r==null){           return true;       }else if(l==null&&r!=null){           return false;       }else if(l!=null&&r==null){           return  false;       }else {           if(l.val==r.val){               return same(l.left,r.right)&&same(l.right,r.left);           }else {               return false;           }       }    }}
原创粉丝点击