【问题标题】:Construct Binary Search Tree from PreOrder从 PreOrder 构造二叉搜索树
【发布时间】:2017-11-15 18:48:09
【问题描述】:

从preorderTransaversal构造二叉搜索树的方法。有什么建议请指教。

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;
}

【问题讨论】:

    标签: algorithm data-structures binary-search-tree preorder


    【解决方案1】:

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

      2         2     2          2      2
    1   3     1         1      1          1
            3         3          3          3
    

    如果您想唯一地描述一棵二叉树,您需要的信息不仅仅是前序遍历。

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

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

    【讨论】:

    • 但是对于二叉搜索树的组合会有所不同且更少。
    猜你喜欢
    • 2011-09-08
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多