相信各位对树这个数据结构不是很陌生,所以在这里就不赘述什么是树以及二叉树了。
简单总结一下:树是一种非线性的数据结构,具有很好的层次。二叉树的存储方式分为顺序存储和链式存储,顺序存储采用列表方式,而链式存储采用链表方式。二叉树的链式存储中,树节点包含数据域、左子链域和右子链域。
构造一个二叉树的总体路线为根节点->左子树->右子树
所以将0-9这10个数据生成一个二叉树就是
下面以列表为基础实现。
#定义树节点类
class Node(object):
def __init__(self,data = -1,lchild = None,rchild = None):
self.data = data
self.lchild = lchild
self.rchild = rchild
#定义二叉树类,root是Node的对象,表示根节点
class BinaryTree(object):
def __init__(self):
self.root = Node()
def add(self,data):
node = Node(data)
if self.isEmpty():
self.root = node
else:
#以列表存储二叉树,每一次都是空的列表,从根节点开始加数据,这里保证加的原则是先左后右
queue = []
qu