簡體   English   中英

Java中BST的級別順序遍歷

[英]Level Order Traversal of BST in Java

我正在嘗試在以下BST上進行級別訂單遍歷。

BST bst = new BST();
    int [] arr = {12, 15, 7, 3,  81, 9, 36, 23, 33, 41, 4};
    for (int i = 0; i <arr.length; i++) {
        bst.add(arr[i]);
    }

這是我的代碼。

public static void levelOrderTraversal(Node root){
        if(root == null) return;
        Queue<Node> queue = new ArrayDeque<Node>();
        queue.add(root);
        while(!queue.isEmpty()){
            Node current = queue.peek();
            System.out.print(current.getData() + " ");
            if (current.left != null)
                queue.add(current.left);
            if (current.right != null){
                queue.add(current.right);
            }
            queue.poll();
        }
    }

我得到的輸出是

12 7 15 3 9 81 4 36 23 41 33 

這顯然不是正確的BFS。 我哪里錯了。

您的遍歷功能是正確的。 您可能想要查看此在線工具

https://www.cs.usfca.edu/~galles/visualization/BST.html

它還提供了插入,刪除和查找過程的可視化。 這是結果樹:

在此輸入圖像描述

我不明白為什么,鑒於您提供的元素列表,樹將如下所示:

12
 |- 7 (L)
    |- 3 (L)
        |- 4 (R)
    |- 9 (R)
 |- 15 (R)
    |- 81 (R)
        |- 36 (L)
            |- 23 (L)
                |- 33 (R)
            |- 41 (R)

或者更好的視覺效果:

    12
   /  \
  7    15
 / \     \
3   9     81
 \       /
  4    36
      /  \
    23    41
      \
       33

請注意,這不是一個平衡的二叉搜索樹。 BST將首先創建一個節點12 (您提供的第一個元素)。 12將仍然是根。 所有小於的元素都被排序(並開始自己生長根等)

暫無
暫無

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

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