#将有序数组转为二叉树并实现中序遍历输出
class BitNode:
def __init__(self):
self.data=None
self.lchild=None
self.rchild=None
def arrtotree(self,arr,start,end): #将数组转为二叉树苏
root=None
if end>=start:
root=BitNode()
mid=(start+end+1)//2 #将数组中间结点当做树的根节点
root.data=arr[mid]
root.lchild=BitNode().arrtotree(arr,start,mid-1) #递归构造左子树
root.rchild=BitNode().arrtotree(arr,mid+1,end) #递归构造右子树
else:
root=None
return root
def printMidOrder(self,root): #二叉树中序遍历,左中右
if root==None:
return
if root.lchild!=None: #遍历输出左子树
BitNode().printMidOrder(root.lchild)
print(root.data)
if root.rchild!=None:
BitNode().printMidOrder(root.rchild)
if __name__=='__main__':
arr=[1,2,3,4,5,6,7,8,9,10]
root=BitNode().arrtotree(arr,0,(len(arr)-1))
BitNode().printMidOrder(root)
将有序数组转为二叉树并实现中序遍历输出
最新推荐文章于 2024-07-31 14:30:10 发布