题目1(验证二叉搜索树)
题解1
class TreeNode :
def __init__ ( self, x) :
self. val = x
self. left = None
self. right = None
class Solution :
def isValidBST ( self, root: TreeNode) - > bool :
import sys
min = sys. maxsize * ( - 1 )
max = sys. maxsize
return self. ValidBST( root, min , max )
def ValidBST ( self, root, min , max ) :
if root is None :
return True
if root. val <= min or root. val >= max :
return False
return self. ValidBST( root. left, min , root. val) and self. ValidBST( root. right, root. val, max )
题目2(二叉树的右视图)
题解2
class TreeNode :
def __init__ ( self, x) :
self. val = x
self. left = None
self. right = None
class Solution :
"""
先对二叉树进行层次化遍历(也称广度优选遍历),将出每一层的节点都拿出来放进一个列表中,然后取出
这样列表的最后一个节点的值,最中返回这个存放最后一个值的列表
"""
def rightSideView ( self, root: TreeNode) - > List[ int ] :
rightVal = [ ]
tempList = [ ]
if root is None :
return rightVal
else :
cNodeList = [ root]
nNodeList = [ ]
while True :
if cNodeList:
node = cNodeList. pop( 0 )
tempList. append( node. val)
if node. left and node. right:
nNodeList. append( node. left)
nNodeList. append( node. right)
elif node. left:
nNodeList. append( node. left)
elif node. right:
nNodeList. append( node. right)
else :
pass
else :
rightVal. append( tempList[ : ] . pop( - 1 ) )
tempList = [ ]
if not nNodeList:
break
else :
cNodeList = nNodeList[ : ]
nNodeList = [ ]
return rightVal
题目3(数值的整数次方)
题解3
class Solution :
def myPow ( self, x: float , n: int ) - > float :
if x == 0 :
return 0
if n == 0 :
return 1
if n < 0 :
x, n = 1 / x, - n
res = 1
while n:
if n & 1 :
res*= x
x*= x
n>> = 1
return res
附上题源链接
题目1链接 题目2链接 题目3链接