np=0
#常用的二叉搜索树
class BST1D:
def __init__(self, loc=-1, l=-1, r=-1):
self.location=loc
self.l=l
self.r=r
#构造一维区间中从l到r的二叉搜索树
#一旦给定一系列一维的点(n个),这颗搜索树的结构(形式)就唯一确定了
def makeBST1D(T, l ,r):
global np
if not (l<r):
return -1
#假设编号为l到编号为r-1的结点已经有序
mid=(l+r)/2
t=np
np+=1
T[t].location=mid #先序遍历构造法
T[t].l= makeBST1D(T, l, mid)
T[t].r= makeBST1D(T, mid+1, r)
return t
def main():
T=[]
for i in range(0,12):
T.append(BST1D())
#结点编号从0到11,共12个一维区间点
makeBST1D(T, 0, 12)
#打印该搜索树,结构和每个结点的赋值是唯一的
for i in range(len(T)):
print("T[%d]=(%d, %d, %d)"%(i, T[i].location, T[i].l, T[i].r))
上例12个结点的构造的搜索二叉树如下: