当前位置: 首页 > 面试题库 >

算法题:根据前序,中序创建二叉树。

李甫
2023-03-14
本文向大家介绍算法题:根据前序,中序创建二叉树。相关面试题,主要包含被问及算法题:根据前序,中序创建二叉树。时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

public class Solution {
public TreeNode func(int [] pre, int s1, int e1, int [] in, int s2, int e2) {
    if(s1>e1||s2>e2) return null;
    TreeNode p = new TreeNode(pre[s1]);
    for(int i=s2;i<=e2;i++){
        if(pre[s1]==in[i]){
        	p.left = func(pre,s1+1,s1+i-s2,in,s2,i-1);
        	p.right = func(pre,s1+i-s2+1,e1,in,i+1,e2);
        }
    }
   		 return p;
    }
    public TreeNode reConstructBinaryTree(int [] pre,int [] in) {
   		 return func(pre,0,pre.length-1,in,0,in.length-1);
    }
}

解析:剑指OFFER原题:构建二叉树。通过前序第一个节点(根节点)分割后序遍历的字符串。分别递归的根节点的左右节点。

 类似资料:
  • 本文向大家介绍算法题,给前序和中序,求出二叉树相关面试题,主要包含被问及算法题,给前序和中序,求出二叉树时的应答技巧和注意事项,需要的朋友参考一下 参考回答:  

  • 本文向大家介绍JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】,包括了JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript数据结构与算法之二叉树遍历算法。分享给大家供大家参考,具体如下: javascript数据结构与算法--二叉树遍历(先序) 先序遍历先访问根节点, 然后以

  • 我试图理解二叉树遍历(PreOrder)的实现。非递归方法很好,但我在试图理解递归方法时完全迷失了方向。 代码: 二叉树 我的理解是,当到达节点2(8-4-2)时,节点2的左边没有。所以条件将失败。 下面是我的问题。 点头之后。左无,右无。右边是横穿的?(因为如果启动:条件失败) 在节点1之后,逻辑如何移动到节点5哪个根节点。对吧? 我对递归的理解很差,请帮助!

  • 本文向大家介绍算法题,trim二叉搜索树相关面试题,主要包含被问及算法题,trim二叉搜索树时的应答技巧和注意事项,需要的朋友参考一下 参考回答: C++版本  

  • HLOJ 9576,习题7-2 二叉排序树 输入一个整数关键字序列,生成一棵用链式存储结构存储的二叉排序树,对该二叉排序树能进行查找和插入结点的操作,并对该二叉排序树中结点的关键字按递增和递减顺序输出。 要求依次完成以下工作: (1) 以这n个整数生成(建立)一棵用链式存储结构存储的二叉排序树; (2) 按递增顺序输出该二叉排序树中的整数(关键字); (3) 输入一个整数key1,对该二叉排序树进

  • 我正在研究一个小算法,它可以按照级别顺序构建二叉树。我得到了一个数组,我必须使用其中的值按级别顺序构建二叉树。示例:arr inarr[5]={1,2,3,4,5}; 给定这样的数组,我需要填写一个二叉树,看起来像这样: (*为NULL)节点是基本的二进制节点,具有左指针和右指针以及用于保存数组中值的int的空格。 我理解根据树的高度遍历树的概念,一次遍历一个层次,但我不确定以这种方式构建树的正确