代码如下:
# 定义节点类
class treeNode(object):
def __init__(self, x=-1, lchild=None, rchild=None):
self.val = x
self.lchild = lchild
self.rchild = rchild
# 构建树
class Tree(object):
def __init__(self):
self.root = treeNode()
self.queue = []
def addNode(self, x):
new_node = treeNode(x)
if self.root.val == -1: # 表明此时树还是空的
self.root = new_node
self.queue.append(self.root)
else:
cur_root = self.queue[0]
if not cur_root.lchild: # 如果左孩子为空,就对左孩子赋值
cur_root.lchild = new_node
self.queue.append(cur_root.lchild)
else: # 否则,就对右孩子赋值
cur_root.rchild = new_node
self.queue.append(cur_root.rchild)
self.queue.pop(0) # 如果右孩子已经赋上了值,就说明这个二叉树单元已经完整了,此时要弹出当前二叉树单元的父节点
# 用法
if __name__ == '__main__':
my_tree = Tree()
my_tree.addNode(10)
my_tree.addNode(6)
my_tree.addNode(14)
my_tree.addNode(4)
my_tree.addNode(8)
my_tree.addNode(12)
my_tree.addNode(16)
网友评论