我在尝试用Python构建二叉树,请问下列程序有哪些问题
class Node(object):
def __init__(self, data=None, lchild=None, rchild=None):
self.elem = data # 表示数据域
self.lchild = lchild # 表示左子树
self.rchild = rchild # 表示右子树
def PreOrder(self, root): # 先序遍历
if root == None:
return
print(root.elem)
self.PreOrder(root.lchild)
self.PreOrder(root.rchild)
def InOrder(self, root): # 中序遍历
if root == None:
return
self.InOrder(root.lchild)
print(root.elem)
self.InOrder(root.rchild)
def PostOrder(self, root): # 后序遍历
if root == None:
return
self.PostOrder(root.lchild)
self.PostOrder(root.rchild)
print(root.elem)
def breath_travel(self, root): # 层序遍历
if root == None:
return
queue = []
queue.append(root)
while queue:
node = queue.pop(0)
print(node.elem)
if node.lchild != None:
queue.append(node.lchild)
if node.rchild != None:
queue.append(node.rchild)
def createBiTree(self, root):
data = input()
if data == "#": # 如果当前元素为'#',则认为其为None
return
else:
root.elem = data
root.lchild = self.createBiTree(root.lchild) # 构造左子树
root.rchild = self.createBiTree(root.rchild) # 构造右子树
return
root = Node() # 创建根节点
root.createBiTree(root) # 构造整个二叉树
# 遍历二叉树
root.PreOrder(root) # 先序遍历
root.InOrder(root) # 中序遍历
root.PostOrder(root) # 后序遍历
root.breath_travel(root) # 层序遍历