class Tree:
def __init__(self,entry,left=None,right=None):
self.entry=entry
self.left=left
self.right=right
def __repr__(self):
args=repr(self.entry)
if self.left or self.right:
args+=',{0},{1}'.format(repr(self.left),repr(self.right))
return 'Tree({0})'.format(args)
class BStree(Tree):
pass
def square_tree(t):
if t==None:
return
else:
t.entry=t.entry**2
square_tree(t.left)
square_tree(t.right)
def height(t):
if t==None:
return 0
else:
return 1+max(height(t.left),height(t.right))
def size(t):
if t==None:
return 0
else:
return size(t.left)+size(t.right)+1
def find_path(t,x):
if t==None:
return None
elif t.entry==x:
return (x,)
left=find_path(t.left,x);right=find_path(t.right,x)
if left:
return (t.entry,)+left
elif right:
return (t.entry,)+right
else:
return None
def preorder(t):
if t!=None:
preorder(t.left)
print(t.entry,end=' ')
preorder(t.right)
#t=Tree(2,Tree(7,Tree(2),Tree(6,Tree(5),Tree(11))),Tree(15))
#print(t)
#preorder(t)
def list_to_bst(lst):
if len(lst)==0:
return None
elif len(lst)==1:
return Tree(lst[0])
else:
q=len(lst)//2
lchild=list_to_bst(lst[:q])
rchild=list_to_bst(lst[q+1:])
return Tree(lst[q],lchild,rchild)
def find_path_bst(t,val):
lst=list(range(1,10))
t=list_to_bst(lst)
print(t)
preorder(t)
hw7
最新推荐文章于 2022-09-25 23:18:23 发布