簡體   English   中英

二進制搜索樹在沒有指針的Java中如何工作?

[英]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代碼中,類類型( leftright )成員聲明隱式聲明了指針。 Java中的指針沒有特殊的表示法,因為大多數事情都是通過指針處理的。 這些在Java語言規范中被稱為指針 ,但是大多數Java程序員都將它們稱為reference

在您的示例中,本質上只是Java和C ++之間的語法不同,但請注意,C ++指針和C ++引用都沒有直接對應於Java指針。

另請注意:您可能會遇到Java沒有指針的參數。 由於某些原因,我無法理解(為什么他們不熟悉自己喜歡的語言的規范,以及為什么他們能夠忽略例如在屏幕上顯示NullPointerException ?),一些Java程序員會強烈否認該語言具有指針。 這是一個謎,但我認為可以放心地忽略它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM