```python
#!/usr/bin/python
# author Yu
# 2023年01月29日
class node:
def __init__(self, elem=-1, lchild=None, rchild=None):
self.elem = elem
self.lchild = lchild
self.rchild = rchild
class Tree:
def __init__(self):
self.root = None
self.queue = []
def insert_node(self, elem):
new_node = node(elem)
self.queue.append(new_node)
if self.root is None:
self.root = new_node
elif self.queue[0].lchild is None:
self.queue[0].lchild = new_node
else:
self.queue[0].rchild = new_node
self.queue.pop(0)
def preorder(self, current_node: node):
if current_node:
print(current_node.elem,end=" ")
self.preorder(current_node.lchild)
self.preorder(current_node.rchild)
if __name__ == '__main__':
tree = Tree()
for i in range(1, 11):
tree.insert_node(i)
tree.preorder(tree.root)
完全二叉树的建立
通过借助列表来判断二叉树的左右孩子是否为空