[英]How do binary search trees work in Java without pointers?
我正在嘗試比較在Java和C ++中實現BST的方式。 在Java中,Node看起來像
class Node{
int data;
Node left;
Node right;
}
在C ++中將是:
class Node{
int data;
Node *left;
Node *right;
}
我對Java方法為何有效感到困惑。 我知道在C ++中,左和右是指向包含下一個Node的內存區域的指針。 在Java中,我並沒有真正了解所有東西最終如何連接在一起。 左右分別是節點本身,而不是節點的指針,因此Java中的每個Node對象都會占用3個節點的空間(一個用於自身,兩個用於其子級)嗎? 如果有人能解釋所有節點的連接方式以及內存分配的差異,那么這將是非常有幫助的。
另外,可以在C ++中完成相同的事情嗎? 您能否只讓Node左邊和Node右邊,而不是指針? 如果是這樣,首先使用指針的好處是什么? 謝謝!
在Java代碼中,類類型( left
和right
)成員聲明隱式聲明了指針。 Java中的指針沒有特殊的表示法,因為大多數事情都是通過指針處理的。 這些在Java語言規范中被稱為指針 ,但是大多數Java程序員都將它們稱為reference 。
在您的示例中,本質上只是Java和C ++之間的語法不同,但請注意,C ++指針和C ++引用都沒有直接對應於Java指針。
另請注意:您可能會遇到Java沒有指針的參數。 由於某些原因,我無法理解(為什么他們不熟悉自己喜歡的語言的規范,以及為什么他們能夠忽略例如在屏幕上顯示NullPointerException
?),一些Java程序員會強烈否認該語言具有指針。 這是一個謎,但我認為可以放心地忽略它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.