二叉搜索树
从大树找小数
class Solution:
def searchBST(self,root:TreeNode,val:int)->TreeNode:
# 为什么要有返回值:
# 因为搜索到目标节点就要立即return,
# 这样才是找到节点就返回(搜索某一条边),如果不加return,就是遍历整棵树了。
if not root or root.val == val:
return root
if root.val>val:
return self.searchBST(root.left,val)
if root.val<val:
return self.searchBST(root.right,val)
验证二叉搜索树(左小右大)
给定一个二叉树,判断其是否是一个有效的二叉搜索树。
假设一个二叉搜索树具有如下特征:
1.节点的左子树只包含小于当前节点的数。
2.节点的右子树只包含大于当前节点的数。
3.所有左子树和右子树自身必须也是二叉搜索树。
中序遍历下,输出的二叉搜索树是有序序列
这就 变成了判断一个序列是否为递增的问题
class Solution:
def __init__(self):
self.vec = []
def traversal(self,root):
if root is None:
return
self.traversal(root.left)
self.vec.append(root.val)
self.traversal(root.right)
def isVaildBST(self,root):
self.vec = []
self.traversal(root)
for i in range(1,len(self.vec)):
if self.vec[i]<=self.vec[i-1]:
return False
return True