classSolution:defkthSmallest(self,root:Optional[TreeNode],k:int)->int:defcountNodes(root:Optional[TreeNode])->int:ifnotroot:return0return1+countNodes(root.left)+countNodes(root.right)leftCount=countNodes(root.left)ifleftCount==k-1:returnroot.valifleftCount>=k:returnself.kthSmallest(root.left,k)returnself.kthSmallest(root.right,k-1-leftCount)# LeftCount < k