写了一个程序,求大神看看
# -*- coding: UTF-8 -*-.
class Node(object):
    """节点类"""
    def __init__(self, data = -1, lchild = None, rchild = None, isEmpty = 0):
        self.data = data
        self.lchild = lchild
        self.rchild = rchild
        self.isEmpty = isEmpty

class BinaryTree(object):
    """树类"""
    def __init__(self):
        self.root = Node(isEmpty = 1)

    def add(self, data):
        """为树增加节点,建立二叉查找树"""
        node = Node(data)
        if self.root.isEmpty == 1:
            self.root = node
        else:
            treeNode = self.root
            while(1):
                if node.data <= treeNode.data:
                    if treeNode.lchild == None:
                        treeNode.lchild = node
                        break
                    else:
                        treeNode = treeNode.lchild
                else:
                    if treeNode.rchild == None:
                        treeNode.rchild = node
                        break
                    else:
                        treeNode = treeNode.rchild

    def printTree(self):
        """按之字形顺序打印二叉树"""
        if self.root == None:
            return
        myList = []
        myList.append(self.root)
        flagForward = 0# 为0表示下一行逆序打印,为1表示下一行正序打印
        numberNow = 1
        numberNext = 0
        while(1):
            # 表示在该行查找
            if numberNow:
                # 总是将先放入的先打印出来
                node = myList.pop(0)
                numberNow -= 1
                print node.data,
                # 根据flagForward的值改变左右子树的打印数学
                if flagForward:
                    if node.rchild:
                        myList.insert(numberNow, node.rchild)
                        numberNext += 1
                    if node.lchild:
                        myList.insert(numberNow, node.lchild)
                        numberNext += 1
                else:
                    if node.lchild:
                        myList.insert(numberNow, node.lchild)
                        numberNext += 1
                    if node.rchild:
                        myList.insert(numberNow, node.rchild)
                        numberNext += 1
            # 表示该行结束了
            else:
                # 下一行变成该行
                if numberNext:
                    numberNow = numberNext
                    numberNext = 0
                    # 正方向逆序
                    flagForward = ~flagForward
                # 表示树结束了
                else:
                    break

def test():
    'Test the program.'
    arr = [5, 6, 1, 4, 2, 69, -1, 24]
    tree = BinaryTree()
    for item in arr:
        tree.add(item)
    #         5
    #     1       6
    # -1    5      69
    #      2      24
    print '按之字形顺序打印二叉树:'
    tree.printTree()

if __name__ == "__main__":
    test()