java、python语言判断一棵二叉树是否对称

来源:互联网 发布:java输入年份判断闰年 编辑:程序博客网 时间:2024/04/29 03:05


假设一棵二叉树有N层


第二层:左节点=右节点


第三层:左左=右右,左右=右左


第四层:左1左=右1右,左1右=右1左,左2左=右2右,左2右=右2左(1为外,2为内)

我们使用递归实现

class TreeNode:     def __init__(self, x):         self.val = x         self.left = None         self.right = Noneclass Solution:    def isSymmetrical(self, pRoot):        if not pRoot:            return True        return self.panduan(pRoot.left,pRoot.right)#递归实现函数  def panduan(self,left,right):        if not left and not right:            return True        if not left or not right:            return False        if left.val!=right.val:            return False        return self.panduan(left.left,right.right) and self.panduan(left.right,right.left)
下面是java实现代码:

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)    {        if(pRoot==null)return true;        return compare(pRoot.left,pRoot.right);                      }    public boolean compare(TreeNode left,TreeNode right){        if(left==null)return right==null;        if(right==null)return false;        if(left.val!=right.val)return false;        return compare(left.left,right.right)&&compare(left.right,right.left);    }}




0 0