精华内容
下载资源
问答
  • /** * * 思路 :对称二叉树是关于中间轴对称的 * * 从根节点出发,判断根节点是不是对称的,假如根节点对称(左节点的值和右节点的值相等), * 再判断左节点的左节点和右节点的右节点 * 左节点的右节点和右节点的左...

    /**
    *
    * 思路 :对称二叉树是关于中间轴对称的
    *
    * 从根节点出发,判断根节点是不是对称的,假如根节点对称(左节点的值和右节点的值相等),
    * 再判断左节点的左节点和右节点的右节点
    * 左节点的右节点和右节点的左节点是不是对称的
    *
    * 本质是根据节点去找镜像点比较
    */

     

    /**
     * 
        *   思路  :对称二叉树是关于中间轴对称的
     *   
        *   从根节点出发,判断根节点是不是对称的,假如根节点对称(左节点的值和右节点的值相等),
        *   再判断左节点的左节点和右节点的右节点
        *   左节点的右节点和右节点的左节点是不是对称的
     *  
        *    本质是 根据节点去找镜像点比较
     */
    public class TreeSymmetric {
    
        public static boolean isSymmetric(TreeNode root) {
            if (root == null)
                return true;
            return isMirror(root.left, root.right);
        }
    
        public static boolean isMirror(TreeNode left , TreeNode right) {
            if (left == null && right == null)
                return true; // 两个都是null
            if (left == null || right == null)
                return false; // 有一个是null
            return left.val == right.val && isMirror(left.left, right.right) && isMirror(left.right, right.left); //递归
        }
    
        public static class TreeNode {
            int val;
            TreeNode left;
            TreeNode right;
            TreeNode(int x) {
                val = x;
            }
        }
    
        public static void main(String[] args) {
            TreeNode root = new TreeNode(20);
            root.left = new TreeNode(21);
            root.right = new TreeNode(21);
            root.left.left = new TreeNode(15);
            root.right.right = new TreeNode(15);
            root.left.right = null;
            root.right.left = null;
            System.out.println(isSymmetric(root));
            
        }
    
    }

     

    转载于:https://www.cnblogs.com/moris5013/p/11066157.html

    展开全文
  • 面试题里不光要求结构上对称,而且要求对称结点中的内容一样 可以使用递归的方法,同时比较左子树的左结点和右子树的右结点,比较左子树的右结点和右子树的左结点。 代码如下: public class Test { public ...

    面试题里不光要求结构上对称,而且要求对称结点中的内容一样

    可以使用递归的方法,同时比较左子树的左结点和右子树的右结点,比较左子树的右结点和右子树的左结点。

    代码如下:

    public class Test {
    	public static void main(String [] args){
    		
    	}
    	boolean Judge(Node LeftNode,Node RightNode){
    		if(LeftNode!=null&&RightNode!=null){
    			if(LeftNode.val==RightNode.val){
    				if(Judge(LeftNode.left,RightNode.right)&&Judge(LeftNode.right,RightNode.right)){
    					return true;
    				}
    			}
    		}
    		else if(LeftNode==null&&RightNode==null)return true;
    		return false;
    	}
    	boolean Judge(Node root){
    		if(root==null)return true;
    		else return Judge(root.left,root.right);
    	}
    }
    class Node{
    	Node left;
    	Node right;
    	int val;
    	Node(int v){
    		val=v;
    	}
    }


    展开全文
  • *//**对称二叉树*请实现一个函数,用来判断一颗二叉树是不是对称的。* 注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。* */public class solution30 { public boolean isSymmetrical(TreeNode ...
    package Solutions;

    /**
    * Created by hu on 2015/12/11.
    */
    /*
    *对称的二叉树
    *请实现一个函数,用来判断一颗二叉树是不是对称的。
    * 注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
    * */
    public class solution30 {
    public boolean isSymmetrical(TreeNode pRoot)
    {
    if (pRoot==null){
    return true;
    }
    return isSame(pRoot.left,pRoot.right);
    }
    public boolean isSame(TreeNode left,TreeNode right){
    if (right==null&&left==null){
    return true;
    }
    if(right==null||left==null){
    return false;
    }
    if(left.val!=right.val){
    return false;
    }
    return (isSame(left.left,right.right)&&isSame(left.right, right.left));
    }
    }

    转载于:https://www.cnblogs.com/hujingwei/p/5038357.html

    展开全文
  • 一个函数,用来判断一颗二叉树是否对称。 如果一颗二叉树和它的镜像是相同的,那么它是对称的。 对称可以理解为,以根节点所在的竖直线为对称轴,二叉树的左右两边轴对称。 ** 结束条件: 注意:isSym函数,仅...

    写一个函数,用来判断一颗二叉树是否对称。

    如果一颗二叉树和它的镜像是相同的,那么它是对称的。
    对称可以理解为,以根节点所在的竖直线为对称轴,二叉树的左右两边轴对称。
    

    **
    结束条件:
    注意:isSym函数,仅需要一个参数proot
    1.若二叉树为空,返回True
    注意:isMrr函数,需要两个参数proot.left,proot.right
    2.若二叉树仅有一个节点,即根节点(也即叶节点),返回True
    3.若二叉树的left和right存在且相等,继续比较左-左与右-右,以及左-右与右-左,即返回isMrr(left.left,right.right) and isMrr(left.right,right.left)
    4.其他情况,返回False
    **
    下面展示完整的代码

    class TreeNode:
        def __init__(self, value):
            self.val = value
            self.left = None
            self.right = None
    
    
    #判断对称二叉树
    def isSym(self, proot):
        #若二叉树不存在,返回True
        if not proot:
            return True
        return isMrr(proot.left,proot.right)
    #判断左子树、右子树是否相同
    def isMrr(left, right):
        #若二叉树中仅有一个节点,即根节点是叶节点,返回True
        if left is None and right is None:
            return True
        #若左右节点存在且相同,继续判断左-左和右-右,以及左-右和右-左
        elif left and right and left.val == right.val:
            return isMrr(left.left, right.right) and isMrr(left.right, right.left)
        else:
            return False
    
    
    展开全文
  • 判断一二叉树是不是对称

    千次阅读 2019-07-01 11:23:40
    请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 ''' 分析 采用根左右,和根右左的方式遍历二叉树,如果一样则对称, 若果二叉树结点值相同,...
  • 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
  • 如何判断一二叉树是否对称
  • 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的 / * public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = ...
  • 其实递归的逻辑和判断个二叉树是否相同一样,所以很容易就写出来了。 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * ...
  • 题目:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 思路: 前序遍历和对称前序遍历(先遍历根节点 然后遍历右子树,然后左子树),而且...
  • 请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 参考代码 boolean isSymmetrical(TreeNode root){ if(root == null)return true; LinkedList...
  • 请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 即左右子树交换后 和原来的树 一模一样 方法1: /* public class TreeNode { int val = ...
  • 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 思路:首先根节点以及其左右子树,左子树的左子树和右子树的右子树相同,左子树的右子树和右子...
  • 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 思路: 代码: /* public class TreeNode { int val = 0; TreeNode left = null; ...
  • 请实现一个函数,用来判断一棵二叉树是不是对称的。 如果一个二叉树的镜像和此二叉树相同,定义其为对称的。 代码实现如下: bool isSymmetrical(TreeNode* pRoot) { if (pRoot == NULL) return false; ...
  • 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public ...
  • 问题:给定二叉树,判定其是否对称二叉树(也就是说树是否依中轴线对称)。比如,下面这课二叉树对称的: 1 / \ 2 2 / \ / \ 3 4 4 3 而下面这颗树是不对称的: 1 / \ 2 2 \ \ 3 3 ...
  • 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 代码很简单,关键还是知道怎么样才能判断一个 二叉树是否对称,只要采用前序、中序、后序、...
  • 请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 题目分析:先看图 求二叉树的镜像,我们可以再写一个方法,判断是否对称 判断为空的情况...
  • 请实现一个函数,用来判断一颗二叉树是不是对称的。注意, 如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。*/ package chap8; /* 请实现一个函数,用来判断一颗二叉树是不是对称的。注意, 如果一个...
  • 判断二叉树是否对称

    2019-04-21 08:54:07
    请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; ...
  •  请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 2 思路和方法  定义一种遍历算法,先遍历右子结点再遍历左子结点;如对称先序遍历:根...
  • 请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 S1 牛客解题 如图 根据上图可知:若满足对称二叉树,必须满足: 1 2 3 ...
  • # 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,023
精华内容 5,209
关键字:

判断一个二叉树是不是对称的