簡體   English   中英

Java二進制搜索樹-size()方法溢出

[英]Java Binary Search Tree - size() method overflow

我正在嘗試為Java二進制搜索樹編寫size()方法。 我看過各種教程,它們為size()方法建議了以下格式:

    //Constructor
    public BST() {
            root = null;
        }

        // Inner Node class
        private static class Node<E> {
            protected E element;
            protected Node<E> left, right;
            protected Node(E elem) {
                element = elem;
                left = null;
                right = null;
            }
        }

    public int size() {
            return size(root);
        }

        int size(Node node)
        {
            if (root == null) {
                return 0;
            }
            else {
            return (size(root.left) + 1 + size(root.right));
         }
        }

//Main method
    public static void main(String[] args) {

        BST<String> bag = new BST<String>();

        bag.add("Orange");
        bag.add("Apple");
        bag.add("Pear");

        System.out.println(bag.size());

    }

但是,這返回了堆棧溢出錯誤,我不確定為什么。 有什么想法我要去哪里嗎? 非常感謝。

正如評論中提到的那樣,您的方法int size(Node node)帶有一個稱為node的參數,但是在方法主體中,它不使用node而是使用root 要使用需要對參數進行操作的遞歸方法,這將不起作用。

int size(Node node)方法內表達式root每次出現替換為node ,它將起作用。

暫無
暫無

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

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