本题思路:按照正常的思维模式来找
下面也即递归中的单层处理逻辑
1、从后序遍历(左右中)找根节点(最后一个元素)
2、根据根节点先对中序遍历(左中右)进行分割分为左右子树
3、根据中序中分割完的左右子树对后序遍历进行分割,也分割为分为左右子树
参数为中序遍历和后序遍历的数组,递归处理
终止条件:数组为空,反之返回根节点
同时,题目要求为
inorder
和postorder
都由 不同 的值组成
如果中序遍历和后序遍历有相同的值,还需要进行多一步的判断,判断中序遍历中的值是否就是要找的根节点:下面是我的写法(复杂度略高)。在这里需要注意Java中的引用数据类型的传递方式,直接进行排序会对原数组造成影响。