Java算法系列9 — 构建两个二叉树,并判断他们是否相等

1、构建二叉树非常的简单,只需要new出一些结点类,然后对他们的数据域赋值,最后用左右子树的关系连接所有结点,注意叶子结点的左右子树为NULL。

2、判断两个二叉树是否相等,需要判断他们的结点位置结点数,以及每个结点上的数据相等即可。

/**
     * 构造二叉树
     * @return 返回新构造的二叉树的根节点
     */
    public static BITNode constructTree(){
        BITNode root = new BITNode();
        BITNode node1 = new BITNode();
        BITNode node2 = new BITNode();
        BITNode node3 = new BITNode();
        BITNode node4 = new BITNode();
        root.data = 6;
        node1.data = 3;
        node2.data = 7;
        node3.data = 1;
        node4.data = 9;
        root.lchild = node1;
        root.rchild = node2;
        node1.lchild = node3;
        node1.rchild = node4;
        node2.lchild = node2.rchild = node3.lchild = node3.rchild = node4.lchild = node4.rchild = null;
        return root;
    }
/**
     * 方法功能:判断两个二叉树是否相等
     * @param root1 第一个二叉树
     * @param root2 第二个二叉树
     * @return
     */
    public static boolean isEqual(BITNode root1,BITNode root2){
        if(root1 == null && root2 == null){
            return true;
        }
        if(root1 == null || root2 == null){
            return false;
        }
        if(root1.data == root2.data){
            return isEqual(root1.lchild,root2.lchild) && isEqual(root1.rchild,root2.rchild);
        }else {
            return false;
        }
    }

测试

public static void main(String[] args) {
        BITNode root1 = constructTree();
        BITNode root2 = constructTree();
        boolean equal = isEqual(root1, root2);
        if(equal){
            System.out.println("这两棵树相等");
        }else {
            System.out.println("这两棵树不相等");
        }
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值