对称的二叉树java实现

来源:互联网 发布:有没有哪种编程的实例 编辑:程序博客网 时间:2024/05/17 22:07

请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

思路:建立二叉树镜像,与原二叉树进行比较,相同返回true,否则,返回false。

/*public class TreeNode {    int val = 0;    TreeNode left = null;    TreeNode right = null;    public TreeNode(int val) {        this.val = val;    }}*/public class Solution {    boolean isSymmetrical(TreeNode pRoot)    {        TreeNode node = getMirror(pRoot);        return isSymmetrical(pRoot,node);    }    boolean isSymmetrical(TreeNode pRoot,TreeNode node)    {        if(pRoot == null && node == null){            return true;        }else if(pRoot == null || node  == null){            return false;        }        if(pRoot.val == node.val){            return isSymmetrical(pRoot.left,node.left)&&isSymmetrical(pRoot.right,node.right);        }       return false;    }    TreeNode getMirror(TreeNode pRoot){        if (pRoot == null) {            return null;        }        TreeNode root = new TreeNode(pRoot.val);        root.right = getMirror(pRoot.left);        root.left = getMirror(pRoot.right);        return root;    }}
原创粉丝点击