绝大部分题解都是先重建二叉树,然后再对二叉树进行层序遍历输出它的右视图。其实,我们可以在重建二叉树的过程中,同时得到它的右视图。
核心思路:二叉树的右视图是它由上到下每一层最靠右的结点的集合。
代码如下:
/**
* @author 49367
* @date 2021/4/11 16:17
*/
public class Solution{
private HashMap<Integer, Integer> inRootMap;
private List<Integer> resList;
/**
* 根据二叉树的前序遍历,中序遍历恢复二叉树,并打印出二叉树的右视图
* @param xianxu int整型一维数组 先序遍历
* @param zhongxu int整型一维数组 中序遍历
* @return int整型一维数组
*/
public int[] solve (int[] xianxu, int[] zhongxu) {
// write code here
int len = xianxu.<