补题 | 给定前序中序遍历,求二叉树右视图

1.递归建树

2.层次遍历取最右边元素

def solve(self , xianxu: List[int], zhongxu: List[int]) -> List[int]:
        class TreeNode:
            def __init__(self, x):
                self.val = x
                self.lson = None
                self.rson = None
        def build_tree(pre_order, in_order):
            if len(pre_order) > 0:
                print(pre_order, in_order)
                root = TreeNode(pre_order[0])
                index = in_order.index(pre_order[0])
                # print(index)
                # print(pre_order[1:index+1])
                # print(pre_order[index+1:])
                # print(in_order[:index])
                # print(in_order[index+1:])
                # print("-"*10)
                root.lson = build_tree(pre_order[1:index+1],in_order[:index])
                root.rson = build_tree(pre_order[index+1:],in_order[index+1:])
                return root
            return None
        # write code here
        def bianli(Tree):
            ans = []
            data = []
            data.append(Tree)
            while len(data) != 0:
                now_val = []
                new_list = []
                while len(data) != 0:
                    da = data.pop(0)
                    now_val.append(da.val)
                    if da.lson != None:
                        new_list.append(da.lson)
                    if da.rson != None:
                        new_list.append(da.rson)
                data = new_list
                ans.append(now_val[-1])
            return ans
        Tree = build_tree(xianxu,zhongxu)
        return bianli(Tree)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值