python顺序存储二叉树

参考:www.bilibili.com/video/BV1E4…

实现

# 前序
def arrayToBinary(arr, index=0):
    if not isinstance(arr, list) or len(arr) == 0:
        print("列表为空~")
        return
    print(arr[index])
    if 2 * index + 1 < len(arr):
        arrayToBinary(arr, 2 * index + 1)
    if 2 * index + 2 < len(arr):
        arrayToBinary(arr, 2 * index + 2)


# 中序
def arrayToBinary2(arr, index=0):
    if not isinstance(arr, list) or len(arr) == 0:
        print("列表为空~")
        return
    if 2 * index + 1 < len(arr):
        arrayToBinary2(arr, 2 * index + 1)
    print(arr[index])
    if 2 * index + 2 < len(arr):
        arrayToBinary2(arr, 2 * index + 2)


# 后续
def arrayToBinary3(arr, index=0):
    if not isinstance(arr, list) or len(arr) == 0:
        print("列表为空~")
        return
    if 2 * index + 1 < len(arr):
        arrayToBinary3(arr, 2 * index + 1)
    if 2 * index + 2 < len(arr):
        arrayToBinary3(arr, 2 * index + 2)
    print(arr[index])


# [1,2,3,4,5,6,7]
arrayToBinary([x for x in range(1, 8)])
print("============")
arrayToBinary2([x for x in range(1, 8)])
print("~~~~~~~~~~~~")
arrayToBinary3([x for x in range(1, 8)])