繁体   English   中英

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

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

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

private Comparable[] intHeap;

我仍然不确定如何使用可比性,请有人解释这种数据结构的用法吗?

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

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

如果有多个节点级别,您如何知道下一步要转到哪个节点?

二叉搜索树

先感谢您。

从数组的声明来看,你正在构建的是一个二叉堆——一种专门的基于树的数据结构,它通常存储在一个数组中。 与依赖显式引用的树结构不同,堆依赖于一种巧妙的索引方案,将树“打包”成线性数据结构。

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

如果有多个节点级别,您如何知道下一步要转到哪个节点?

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

你需要通过一个很好的教程。只是给你提个醒,节点会像这样

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

}

推荐您访问二叉搜索树-Java实现

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM