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)