分析:
如果要把一个有序的整数数组放在二叉树中,那么所构造出来的二叉树必定也是一颗有序的二叉树。因此,取数组的中间元素作为根节点,将数组分成左右两部分,对数组的两部分用递归的方法分别构建左右子树。
实现代码:
# -*- coding:utf-8 -*-
class BiTNode():
def __init__(self):
self.data = None
self.lchild = None
self.rchild = None
#方法功能:把有序数组转化为二叉树
def arraytotree(arr,start,end):
root = None
if end >= start:
root = BiTNode()
mid = int((start+end+1)/2)
#树的根节点为数组中间元素
root.data = arr[mid]
#递归用左半部分数组构造root左子树
root.lchild = arraytotree(arr,start,mid-1)
#递归用右半部分数组构造root右子树
root.rchild = arraytotree(arr,mid+1,end)
else:
root = None
return root
#用中序遍历方式打印二叉树结点的内容
def printTreeMidOrder(root):
if root == None:
return
#遍历root结点左子树
if root.lchild != None:
printTreeMi