关于二叉树与遍历的问题,如何解决?

问题遇到的现象和发生背景

二叉树creattree部分报错,需要补全代码

用代码块功能插入代码,请勿粘贴截图
"""to build a binary tree with binary linked list"""

class BTNode():
    def __init__(self, data = None, lchild = None, rchild = None):
        self.data = data
        self.lchild = lchild  # left child
        self.rchild = rchild  # right child

def creatBinTree():
    # finally return root node
    ch = input('Please input an alphabet, to note that \"*\" stands for None: ')



def preorder(self,node): #per-order traversal
    if node ==None:
        return
    print(node.data, end=" ")
    self.preorder(node.lchild)
    self.preorder(node.rchild)


def postorder(self,node): #post-order traversal
    if node == None:
        return
    self.postorder(node.lchild)
    self.postorder(node.rchild)
    print(node.data,end="")


def inorder(self,node): #in-order traversal
    if node==None:
        return
    self.inorder(node.lchild)
    print(node.data,end=" ")
    self.inorder(node,rchild)

def levelorder(): #level-order traversal by queue


def countleaf(): #count the number of leaf nodes




def inorder2():



if __name__ == '__main__':
    #with the pre-order traversed sequence as input:AB*D**C**. "*" stands for NONE.
    bt = creatBinTree()
    print('pre-order traversal: ')
    preorder(bt)
    print('\n')
    
    print('post-order traversal: ')
    postorder(bt)
    print('\n')
    
    print('in-order traversal: ')
    inorder(bt)
    print('\n')
    
    print('level-order traversal: ')
    levelorder(bt)
    print('\n')

    n = 0 #global variant to save the number of leaf nodes
    countleaf(bt)
    print('The number of leaf nodes is: ', n)
    print('\n')



    print('in-order traversal by non-recursive way: ')
    inorder2(bt)

https://blog.csdn.net/a34921324/article/details/110151387