zoukankan      html  css  js  c++  java
  • 对称的二叉树-剑指Offer

    对称的二叉树

    题目描述

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

    思路

    1. 先序遍历二叉树的顺序为“根->左->右”,我们定义个跟先序遍历对称的遍历顺序“跟->右->左”,如果这两个遍历的结点对应相等,则是对称二叉树
    2. 注意:因为叶子结点的左右子树在遍历结果中无法根据先后顺序区分,所以我们需要考虑到null指针,需要null指针对应也相等
    3. 如果二叉树为空,则也是对称的

    代码

    /*
    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 symmetry(pRoot.left, pRoot.right);
        }
    	boolean symmetry(TreeNode pRoot1, TreeNode pRoot2) {
    		if(pRoot1 == null && pRoot2 == null) {
    			return true;
    		}
    		if (pRoot1 == null || pRoot2 == null) {
    			return false;
    		}
    		if (pRoot1.val != pRoot2.val) {
    			return false;
    		}
    		return symmetry(pRoot1.left, pRoot2.right) && symmetry(pRoot1.right, pRoot2.left);
    	}
    }
  • 相关阅读:
    LeetCode(1): 两数之和
    LeetCode(2): 两数相加
    目标检测
    图像语义分割
    Python的图像库
    Caffe
    Layers Of Caffe
    Solver Of Caffe
    ORA-01144_表空间数据文件超出最大限制
    ORA-01654_TableSpace空间不足问题处理
  • 原文地址:https://www.cnblogs.com/rosending/p/5721038.html
Copyright © 2011-2022 走看看