创建二叉树

operations = [[0, 0], [0, 0], [1, 1], [1, 0], [0, 0]]
operations = [[0, 0], [1, 0], [1, 0], [2, 1], [2, 1], [2, 1], [2, 0], [3, 1], [2, 0]]
# operations = eval(input().strip())
 
 
 
def main(operations):
 
    class TreeNode():
        def __init__(self, var):
            self.root = var
            self.left = None
            self.right = None
 
    node = TreeNode(-1)
    tree = [[node]]
    n = len(operations)
    for i in range(n):
        height, index = operations[i]
 
        new_node = TreeNode(i)
        if len(tree) <= height + 1:
            tree.append([])
 
        pre_node = tree[height][index]
 
        if not pre_node.left or not pre_node.right:
            tree[height + 1].append(new_node)
 
        if not pre_node.left:
            pre_node.left = new_node
        elif not pre_node.right:
            pre_node.right = new_node
 
 
    res = []
    queue = [tree[0][0]]
    while len(queue) > 0:
        node1 = queue.pop(0)
 
        if node1:
            res.append(node1.root)
            queue.append(node1.left)
            queue.append(node1.right)
        else:
            res.append("null")
 
    while True:
        if res[-1] == "null":
            res.pop()
        else:
            break
    return res
 
print(main(operations))

operations = [[0, 0], [0, 0], [1, 1], [1, 0], [0, 0]]
operations = [[0, 0], [1, 0], [1, 0], [2, 1], [2, 1], [2, 1], [2, 0], [3, 1], [2, 0]]
# operations = eval(input().strip())
 
 
 
def main(operations):
 
    class TreeNode():
        def __init__(self, var):
            self.root = var
            self.left = None
            self.right = None
 
    node = TreeNode(-1)
    tree = [[node]]
    n = len(operations)
    for i in range(n):
        height, index = operations[i]
 
        new_node = TreeNode(i)
        if len(tree) <= height + 1:
            tree.append([])
 
        pre_node = tree[height][index]
 
        if not pre_node.left or not pre_node.right:
            tree[height + 1].append(new_node)
 
        if not pre_node.left:
            pre_node.left = new_node
        elif not pre_node.right:
            pre_node.right = new_node
 
 
    res = []
    queue = [tree[0][0]]
    while len(queue) > 0:
        node1 = queue.pop(0)
 
        if node1:
            res.append(node1.root)
            queue.append(node1.left)
            queue.append(node1.right)
        else:
            res.append("null")
 
    while True:
        if res[-1] == "null":
            res.pop()
        else:
            break
    return res
 
print(main(operations))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值