tree_depth.py 1011 Bytes
Newer Older
bonnieyan committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
class node():
    def __init__(self, k=None, l=None, r=None):
        self.val = k
        self.left = l
        self.right = r


def listcreattree(root, llist, i):
    if i < len(llist):
        if llist[i] == 'null':
            return None  ###这里的return很重要
        else:
            root = node(k=llist[i])
            # print(llist[i])
            root.left = listcreattree(root.left, llist, 2 * i + 1)
            root.right = listcreattree(root.right, llist, 2 * i + 2)
            return root  ###这里的return很重要
    return root


def tree_depth(root):
    if root == None:
        return 0
    #最大深度
    return max(tree_depth(root.left), tree_depth(root.right)) + 1
    # return min(tree_depth(root.left), tree_depth(root.right)) + 1 最小深度


if __name__ == '__main__':
    root = node()
    # llist = ['1', '2', '3', '#', '4', '5']
    llist = [3, 9, 20, 'null', 'null', 15, 7]
    root = listcreattree(root, llist, 0)
    result = tree_depth(root)
    print(result)