给定一个最大树的根节点:最大树是指每个节点的值都大于该节点子树中的任何一个值。
这个最大树是由一个列表A生成的,生成规则如下:
- 如果A为空,return
null
- 否则,找到A中最大的元素
A[i]
,生成值为A[i]的节点作为根节点 - 根节点的左孩子将由
A[:i]
生成 - 根节点的右孩子将由
A[i+1:]
生成 - 返回根节点
现在给定一个已经根据上述规则构造好的树的根节点root
,原始列表为A。
现在向A末尾添加一个元素val
,新数组定义为B,请你返回由数组B按照上述规则构造的树。
题意分析:
根据题目所说构造树的方式,也就是最大值为根节点,最大值左边的数组为左子树,右边的数组为右子树
,很容易看出来如果将树还原成数组的话,应该是中序遍历
那么这里我们先将树还原成数组,然后将新加的值放进数组中,最后再将数组构造成树
1 | class Solution(object): |