二进制搜索树中的节点如何存储在java中?和其他相关问题

时间:2015-11-13 16:21:15

标签: java algorithm tree

我正在尝试实现二叉搜索树。但我不明白它们将如何存储在数组中。这是我将其存储在的数据结构:

private Comparable[] intHeap;

我仍然不确定如何使用可比较的,请有人解释一下这个数据结构的使用吗?

我如何检查二叉搜索树的最大和最小元素?

如果我有以下树,它会被存储在intHeap中1,3,4,6,7,8,10,13,14吗?

如果有多个节点级别,您如何知道下一个节点?

binary search tree

提前谢谢。

2 个答案:

答案 0 :(得分:1)

从数组的声明来看,你正在构建的是binary heap - 一种专门的基于树的数据结构,通常存储在一个数组中。与依赖于显式引用的树结构不同,堆依赖于一种聪明的索引方案,即"包装"树形成线性数据结构。

Comparable接口允许您构建一个可以存储任意类数据的堆,只要它们实现Comparable接口即可。这很有用,因为您可以构建可重用的代码,该代码适用于您自己类型的数字,字符串或对象。

  

如果有多个节点级别,您如何知道下一个节点?

如果节点位于索引n,则其两个子节点位于索引2n + 1和2n + 2处。如果您位于索引k并且您想要跟随左子树,设置k = 2*k+1;如果要关注正确的子树,请设置k = 2*k+2。继续使用相同的算法,直到您点击null数组中的intHeap元素。

答案 1 :(得分:0)

你需要通过一个很好的教程。只是为了让你抬头,节点将是这样的

Class Node
{
   int data;//ideally should be generic.
   Node leftChild;
   Node rightChild;
   ...

}

建议您访问Binary Search Tree - Java Implementation