二叉树先序遍历,报错NameError: name 'PreOrder' is not defined
# 二叉链节点类
class BTNode:
def __init__(self, d=None):
self.data = d
self.lchild = None
self.rchild = None
# 二叉树类
class BTree:
def __init__(self): #创建二叉树
self.b = None
def SetRoot(self, r):
self.b = r
def PreOreder(bt): #先序遍历
_PreOrder(bt.b)
def _PreOrder(b):
if b != None:
print(b.data,end='')
_PreOrder(b.lchild)
_PreOrder(b.rchild)
if __name__ == '__main__':
# 创建二叉链
b = BTNode('A')
p1 = BTNode('B')
p2 = BTNode('C')
p3 = BTNode('D')
p4 = BTNode('E')
p5 = BTNode('F')
p6 = BTNode('G')
b.lchild = p1
b.rchild = p2
p1.lchild = p3
p3.rchild = p6
p2.lchild = p4
p2.rchild = p5
# 创建二叉树对象
bt = BTree()
bt.SetRoot(b)
#先序遍历
PreOrder(bt)
不是写的很清楚了吗?“NameError: name 'PreOrder' is not defined”,PreOrder没有定义,你定义的方法叫PreOreder和_PreOrder,而调用的却是PreOrder,不属于其中任何一个。