前序遍历+中序遍历=后序遍历

def find_post(pre_str: str, mid_str: str) -> str:
    if not pre_str:
        return ""
    post_str = ""
    root_in_mid = mid_str.find(pre_str[0])
    ltree_rlimit = 0
    for item in mid_str[:root_in_mid]:
        locate = pre_str.find(item)
        if ltree_rlimit < locate:
            ltree_rlimit = locate
    root_in_mid = mid_str.find(pre_str[0])
    # ltree
    post_str += find_post(pre_str[1:ltree_rlimit + 1], mid_str[:root_in_mid])
    # rtree
    post_str += find_post(pre_str[ltree_rlimit + 1:], mid_str[root_in_mid + 1:])
    post_str += pre_str[0]
    return post_str


def func():
    # please define the python3 input here.
    # For example: a,b = map(int, input().strip().split())
    pre_visit = input().strip()
    mid_visit = input().strip()
    # please finish the function body here.
    post_visit = find_post(pre_visit, mid_visit)
    # please define the python3 output here. For example: print().
    print(post_visit)


if __name__ == "__main__":
    func()

  

posted @ 2020-07-31 14:53  玉北  阅读(144)  评论(0编辑  收藏  举报