java中二叉搜索树中的节点是如何存储的?以及其他相关问题

How are nodes in binary search tree stored in java? and other questions related

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

private Comparable[] intHeap;

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

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

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

如果有多个节点级别,你怎么知道下一步要去哪个节点?

提前致谢。

需要好好过一遍tutorial.Just给大家提个醒,节点会是这样

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

}

推荐您访问Binary Search Tree - Java Implementation

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

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

How do you know which node to go to next, if there is multiple node levels?

如果一个节点位于索引 n,它的两个子节点将位于索引 2n + 1 和 2n + 2。如果您位于索引 k 并且您想跟随左侧子树,设置k = 2*k+1;如果要跟随右子树,设置k = 2*k+2。继续遵循相同的算法,直到您在 intHeap 数组中找到 null 元素。