Python二叉链先序遍历

问题

二叉树先序遍历,报错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,不属于其中任何一个。