• 剑指 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;
        }
  • 相关阅读:
    软件工程结对作业
    软件工程第二次作业
    软件工程第一次作业
    MATLAB安装教程
    实现生成小学四则运算练习题
    结对编程-审查代码
    软件第三次作业
    练习使用Eclipse进行单元测试
    软件工程第一次作业
    Visual Studio Code (vscode)
  • 原文地址:https://www.cnblogs.com/peanut-zh/p/14134543.html
Copyright © 2020-2023  润新知