当前位置: 首页 > 后端技术 > Python

力扣315,计算右边小于当前元素的元素个数Python实现

时间:2023-03-26 00:08:52 Python

题目要求:思路:构建一棵二叉树,节点有如下属性:self.left=Noneself.right=Noneself.val=val#节点值self.nodecount=1#当前节点值出现了多少次self.leftcount=0#左子树节点个数从后向前遍历数组元素。如果当前数组元素值等于当前树节点值,则将当前节点的出现次数加一。如果当前元素值大于树节点值,如果当前节点有右节点,继续比较右节点,如果当前节点没有右节点,用当前数组元素创建新节点,插入入树,如果当前元素的值小于节点的值,如果当前节点有左节点,则继续比较左节点,如果当前节点没有左节点,则使用当前数组元素创建一个新节点并将其插入树代码:classTreeNode(object):def__init__(self,val):self.left=Noneself.right=Noneself.val=val#节点值self.nodecount=1#当前节点值出现了多少次self.leftcount=0#左子树节点数类解:defcountSmaller(self,nums:List[int])->List[int]:n=len(nums)res=[0]*n如果n==0或n==1:returnresroot=TreeNode(nums[-1])foriinrange(n-2,-1,-1):res[i]=self.insertNode(root,nums[i])returnres#在二叉搜索树中插入一个新节点definsertNode(self,root,val):cur=rootres=0whilecur:如果cur.val==val:cur.nodecount+=1res+=cur.leftcountbreakelifcur.valList[int]:n=len(nums)res=[0]*n如果n==0或n==1:返回resroot=TreeNode(nums[-1])foriinrange(n-2,-1,-1):res[i]=self.insertNode(root,nums[i])返回resdefinsertNode(self,root,val):cur=rootres=0whilecur:ifcur.val==val:cur.nodecount+=1res+=cur.leftcountbreakelifcur.val