zoukankan      html  css  js  c++  java
  • 相同的树

    此博客链接:https://www.cnblogs.com/ping2yingshi/p/13518884.html

    相同的树

    题目链接:https://leetcode-cn.com/problems/same-tree/

    给定两个二叉树,编写一个函数来检验它们是否相同。

    如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

    示例 1:

    输入: 1 1
    / /
    2 3 2 3

    [1,2,3], [1,2,3]

    输出: true
    示例 2:

    输入: 1 1
    /
    2 2

    [1,2], [1,null,2]

    输出: false
    示例 3:

    输入: 1 1
    / /
    2 1 1 2

    [1,2,1], [1,1,2]

    输出: false

    题解:

           思路:遍历第一个树,然后和第二个树逐个对比,如果有不相同的,则返回flase。然后递归遍历左子树和右子树(如果存在的话),如果一个树的左子树或者右子树存在,而另外一方的左子树或者右子树不存在,则直接返回false.

           代码:

    class Solution {
        public boolean isSameTree(TreeNode p, TreeNode q) {
    
            while(p!=null) 
            {
                if(p.val!=q.val)
                {
                    return false;
                }
                if(p.left!=null)`
                {
                    if(q.left!=null)
                    {
                      isSameTree( p.left,  q.left);
                    }
                     else
                       return false;
                }    
                if(q.right!=null)
                {
                    if(p.right!=null)
                    {
                      isSameTree( p.right,  q.right);
                    }
                    else
                       return false;
                }
                     
            
            }
           return true;
        }
    }

    此代码又是超时,还没有找到原因。

       修改代码:(还是超时)

    class Solution {
        public boolean isSameTree(TreeNode p, TreeNode q) {
    
            while(p!=null) 
            {
                if(q!=null&&p.val!=q.val)
                {
                    return false;
                }
                if(p.left!=null)
                {
                    if(q.left!=null)
                    {
                     return isSameTree( p.left,  q.left);
                    }
                     else
                       return false;
                }    
                if(q.right!=null)
                {
                    if(p.right!=null)
                    {
                     return isSameTree( p.right,  q.right);
                    }
                    else
                       return false;
                }
                     
            
            }
           return true;
        }
    }
  • 相关阅读:
    逆序对的相关问题:bzoj1831,bzoj2431
    bzoj3211,bzoj3038
    hdu 1179最大匹配
    hdu 3038带权并查集
    poj 1733离散化(map)+并查集
    codeforces 369B
    poj 1456
    POJ 1988相对偏移
    poj 1986tarjan模板题
    poj 1330lca模板题离线算法
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/13518884.html
Copyright © 2011-2022 走看看