二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。
平衡树,即平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
平衡二叉树的常用算法有红黑树、AVL、Treap、伸展树、SBT等。
- 判断一棵树是否是二叉搜索树
"""
判断一棵树是否是二叉搜索树,采用递归的思想
1,如果这个树为空,返回True
2,不为空的话,判断左右节点与根节点的大小,不满足搜索树的定义,则返回False
3,判断左右子树是否为搜索树,有一棵不是,则返回False,否则返回True
"""
def isBST(root):
if not root or (root.left == None and root.right == None):
return True
if root.left and root.right == None:
if root.val < root.left.val:
return False
else:
return isBST(root.left)
if root.right and root.left == None:
if root.val > root.right.val:
return False
else:
return isBST(root.right)
if root.left and root.right:
if root.val <root.left.val or root.val >root.right.val:
return False
else:
retur