zoukankan      html  css  js  c++  java
  • 剑指 Offer 26. 树的子结构

    /**
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
            this.val = val;
        }
    }
    */
    public class Solution {
        public boolean HasSubtree(TreeNode root1,TreeNode root2) {
            if(root1 == null || root2 == null){
                return false;
            }
            //先从根节点判断B是不是A的子结构,如果不是在分别从左右两个子树判断,
            //只要有一个为true,就说明B是A的子结构
            return isSub(root1,root2) || HasSubtree(root1.left,root2) || HasSubtree(root1.right,root2);
        }
        
        public boolean isSub(TreeNode a,TreeNode b){
            //这里如果B为空,说明B已经访问完了,确定是A的子结构
            if(b == null){
                return true;
            }
            //如果B不为空A为空,或者这两个节点值不同,说明B树不是A的子结构,直接返回false
            if(a == null || a.val != b.val){
                return false;
            }
            //当前节点比较完之后还要继续判断左右子节点
            return isSub(a.left,b.left) && isSub(a.right,b.right);
        }
    }

    剑指offer书上 和这里稍有一点不同,就是 树节点中值得类型不是int,是double,这样在比较的时候就不能简单的用 “==”,

    这是因为计算机表示小数时有误差,判断相等,可以判断它们之差的绝对值是否在一个很小的范围内,若是,则认为它们相等。

    boolean Equal(double num1,double num2){
            if((num1 - num2 > -0.0000001)&&(num1 - num2 <0.0000001))
                return true;
                else
                return false;
        }
  • 相关阅读:
    Python绘图与可视化
    ArcGIS Python人门到精通目录基于ArcGIS10.2,100以上案例15章42个视频806分钟,51GIS网站上线
    arcpy 重分类
    pythonw.exe不能用
    Pyhton 单行、多行注释符号使用方法及规范
    NumPyArray
    python 日期
    solr多core的处理
    如何在Solr中实现多core查询
    solr之高级查询--联表 join查询
  • 原文地址:https://www.cnblogs.com/peanut-zh/p/14134543.html
Copyright © 2011-2022 走看看