2012-02-07 78 views
0

如何可以建立二叉树不排序它,即插入二叉树不排序输入

如果我有一个输入5 4 9 8 1 2 7如何可以插入到基于二叉树的参考。 我知道这可以很容易地与数组实现,但它可能与参考基地?

+2

这功课吗? – 2012-02-07 02:54:44

+0

没有我们可以做的只是一些额外的工作来提高我们的技能 – 2012-02-07 03:03:38

回答

2

一个简单的规则是总是插入到左侧的子树中,然后切换子树。右子树总是比左子树大0-1个元素,所以你总是可以插入左子树。现在,左边的子树比右边的子树大0-1个元素,所以你想切换子树来保持不变。在伪代码:

insert(t,v) { 
    if (t == null) { 
     return new TreeNode(v,null,null) 
    } else { 
     left = insert(t.left,v) 
     right = t.right 
     t.left = right 
     t.right = left 
     return t 
    } 
} 
+2

这建立了一个排序树,OP明确要求不要做的事情。 – templatetypedef 2012-02-07 03:08:35

+0

多数民众赞成在排序的树 – 2012-02-07 03:09:54

+0

我读到,作为构建一棵树(我假定是排序)从未分类的输入。固定。 – Retief 2012-02-07 03:12:34

3
Tree buildTree(int[] array, int index) { 
    if(index > array.length) { return null; } 
    return new Tree(
    array[index], 
    buildTree(array, 2 * index + 1), 
    buildTree(array, 2 * index + 2)); 
} 

大部分的工作是在递归和索引,但它也不是太糟糕的。