Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 由前序构造二叉搜索树_Algorithm_Data Structures_Binary Search Tree_Preorder - Fatal编程技术网

Algorithm 由前序构造二叉搜索树

Algorithm 由前序构造二叉搜索树,algorithm,data-structures,binary-search-tree,preorder,Algorithm,Data Structures,Binary Search Tree,Preorder,从预排序Transversal构建二叉搜索树的方法。如果有任何建议,请给出建议 Node constructTreeFromPreorder(int[] arr,int start,int end) { if(arr==null){ return null; }else{ if(start>end){ return null; } int element=arr[start]; Node node=new Node(element);

从预排序Transversal构建二叉搜索树的方法。如果有任何建议,请给出建议

Node constructTreeFromPreorder(int[] arr,int start,int end)
{
if(arr==null){
    return null;
}else{
    if(start>end){
        return null;
    }
    int element=arr[start];
    Node node=new Node(element); // create node
    if(start==end){
        return node;
    }
    int index=start+1;
    for(int i=index;i<=end;i++){
          index=i;
        if(arr[i]>element){
            break;
        }
    }
    node.left=constructTreeFromPreorder(arr, start+1, index-1);
    node.right=constructTreeFromPreorder(arr, index, end);
    return node;
}
Node-constructurefrompreorder(int[]arr,int-start,int-end)
{
如果(arr==null){
返回null;
}否则{
如果(开始>结束){
返回null;
}
int元素=arr[start];
Node Node=新节点(元素);//创建节点
如果(开始==结束){
返回节点;
}
int index=start+1;
for(int i=索引;IELENT){
打破
}
}
node.left=constructRefrompreOrder(arr,start+1,index-1);
node.right=constructTreeFromPreorder(arr,index,end);
返回节点;
}

有多个二叉树对应于任何预序遍历。例如,考虑前序遍历<代码> [2,1,3] < /代码>。这是所有这些树的前序遍历:

  2         2     2          2      2
1   3     1         1      1          1
        3         3          3          3
如果您想要唯一地描述二叉树,那么您需要的信息不仅仅是一个前序遍历

在您修改问题后添加:其中,只有第一个是有效的二进制搜索树。我不确定给定的前序遍历是否有多个BST


如果列表中有重复项,则任何给定的前序遍历都可能有多棵树。

但对于二元搜索,树的组合将不同且更少。