ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

二叉树-2022.7.2

2022-07-02 10:36:10  阅读:117  来源: 互联网

标签:right return self isSameTree 二叉树 istree 2022.7 root


100.相同的树

c++代码

点击查看代码
class Solution {
public:
    bool isSameTree(TreeNode* p, TreeNode* q) {
        if(p==q&&p==nullptr){
            return true;
        }
        if((p==nullptr&&q)||(p&&q==nullptr)){
            return false;
        }
        if(p->val!=q->val){
            return false;
        }
        bool res=isSameTree(p->left,q->left);
        res&=isSameTree(p->right,q->right);
        return res;
    }
};

Python代码

点击查看代码
class Solution:
    def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
        if (p == None and q == None):
            return True
        if (p == None or q == None):
            return False
        if (p.val != q.val):
            return False
        #islefttree = self.isSameTree(p.left,q.left)
        #isrighttree = self.isSameTree(p.right,q.right)
        #istree = islefttree and isrighttree
        istree = self.isSameTree(p.left,q.left)
        istree = istree and self.isSameTree(p.right,q.right)
        return  istree

记录新发现

在这里发现递归不同的返回写法不同执行时间也不同,这里以Python举例,快了4ms,c++也是快了4ms

image

点击查看代码
	# 比较快
        istree = self.isSameTree(p.left,q.left)
        istree = istree and self.isSameTree(p.right,q.right)
        return  istree
		
	# 比较慢的两种写法
	return self.isSameTree(p.left,q.left) and self.isSameTree(p.right,q.right)
	
        islefttree = self.isSameTree(p.left,q.left)
        isrighttree = self.isSameTree(p.right,q.right)
		istree = islefttree and isrighttree
        return  istree

98.验证二叉树

c++代码

点击查看代码
class Solution {
public:
    bool isValidBST(TreeNode* root) {
        return isValidBST(root, nullptr, nullptr);
    }
    bool isValidBST(TreeNode *root, TreeNode *min, TreeNode *max){
        if (root == nullptr)    return true;
        if (min != nullptr && root->val <= min->val)   return false;
        if (max != nullptr && root->val >= max->val)   return false;
        bool istree = isValidBST(root->left, min, root);
        istree = istree && isValidBST(root->right, root, max); 
        return  istree;
    }
};

python代码

点击查看代码
class Solution:
    def isValidBST(self, root: Optional[TreeNode]) -> bool:
        return self.ValidBST(root, None, None)
    def ValidBST(self, root:TreeNode, mintree:TreeNode, maxtree:TreeNode) -> bool:
        if (root == None):
            return True
        if (mintree != None and root.val <= mintree.val):
            return False
        if (maxtree != None and root.val >= maxtree.val):
            return False
        istree = self.ValidBST(root.left,mintree,root)
        istree = istree and self.ValidBST(root.right, root, maxtree)
        return istree

标签:right,return,self,isSameTree,二叉树,istree,2022.7,root
来源: https://www.cnblogs.com/banyan-1030/p/16436749.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有