Same Tree

<span style="font-family: 微软雅黑; text-align: -webkit-auto; background-color: rgb(255, 255, 255);">【题目】</span>
   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.

【答案】
 思路,都是最直观的利用二叉树天然的递归性质。
 Java版 316ms
/**
* Definition for binary tree
* public class TreeNode {
*     int val;
*     TreeNode left;
*     TreeNode right;
*     TreeNode(int x) { val = x; }
* }
*/
public class Solution {
    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);
    }
}

Python版  180ms
# Definition for a  binary tree node
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    # @param p, a tree node
    # @param q, a tree node
    # @return a boolean
    def isSameTree(self, p, q):
        if(p==None and q==None):                              //注意python中没有!p这种写法,所以老老实实写==None
            return True                                       //注意python中的boolean的真假第一个字母大小,即True、False
        if(p==None or q==None or p.val!=q.val):         //注意python中没有&&和||,对应的分别是and和or
            return False
        return self.isSameTree(p.left,q.left) and self.isSameTree(p.right,q.right       //注意调用isSameTree()要用self

C/C++版  4ms
/**
* Definition for binary tree
* struct TreeNode {
*     int val;
*     TreeNode *left;
*     TreeNode *right;
*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
    bool isSameTree(TreeNode *p, TreeNode *q) {
        if(!p&&!q){
            return true;
        }
        if(!p||!q||p->val!=q->val){
            return false;
        }
        return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
    }
};

三种语言一起用,看看运行时间才发现C有多么高效~~~


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值