博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断两树是否相等 Same Tree
阅读量:6546 次
发布时间:2019-06-24

本文共 1179 字,大约阅读时间需要 3 分钟。

  hot3.png

问题:

Given two binary trees, write a function to check if they are equal or not.

Two binary trees are considered equal if they are structurally identical and the nodes have the same value.

解决:

① 按使用DFS递归遍历,然后判断根节点,左右子树是否相等即可。

/**

 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution { // 0ms
    public boolean isSameTree(TreeNode p, TreeNode q) {
        if(p == null && q == null) return true;
        if(p == null || q == null || p.val != q.val) return false;
        return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
    }
}

② 非递归方法,使用队列。

public class Solution{ //1ms

    public boolean isSameTree(TreeNode p, TreeNode q) {    
        Queue<TreeNode> q1 = new LinkedList<TreeNode>();  
        Queue<TreeNode> q2 = new LinkedList<TreeNode>();                    
        q1.offer(p);  
        q2.offer(q);    
        while( !q1.isEmpty() && !q2.isEmpty() ) {  
            TreeNode x = q1.poll();  
            TreeNode y = q2.poll();    
            if(x==null) {  
                if( y!=null) return false;  
                else continue;  
            }   
            if(y==null || x.val!=y.val) return false;  
            q1.offer( x.left);  
            q1.offer( x.right);  
            q2.offer(y.left);  
            q2.offer(y.right);  
        }  
        return true;  
    }  
}

转载于:https://my.oschina.net/liyurong/blog/1506826

你可能感兴趣的文章
4-5-创建索引表-串-第4章-《数据结构》课本源码-严蔚敏吴伟民版
查看>>
从零开始写一个npm包,一键生成react组件(偷懒==提高效率)
查看>>
中国最强的人工智能学术会议来了
查看>>
Metasploit的射频收发器功能 | Metasploit’s RF Transceiver Capabilities
查看>>
主库 归档 删除策略
查看>>
路过下载攻击利用旧版 Android 漏洞安装勒索软件
查看>>
ThinkSNS 六大子版本体验及源码下载
查看>>
《算法基础》——1.5实际因素
查看>>
《Java数字图像处理:编程技巧与应用实践》——第3章 基本Swing UI组件与图像显示 3.1 JPanel组件与BufferedImage对象的显示...
查看>>
为什么有人讨厌 Google 的新 Logo?
查看>>
腾讯2017暑期实习编程题3
查看>>
Intellij IDEA 构建Spring Web项目 — 用户登录功能
查看>>
[AHOI2013]作业
查看>>
git push被忽略的文件 处理
查看>>
C#中用ILMerge将所有引用的DLL打成一个DLL文件
查看>>
使用makecontext实现用户线程【转】
查看>>
Comet:基于 HTTP 长连接的“服务器推”技术
查看>>
BZOJ 2733: [HNOI2012]永无乡 启发式合并treap
查看>>
四种方法校验数组中是否包含某个指定的字符串
查看>>
安装OpenResty开发环境
查看>>