簡體   English   中英

Java中的二進制搜索樹遍歷(輸出不正確)

[英]Binary Search Tree Traversal in Java(output not coming correct)

我正在BST上工作,現在嘗試樹遍歷。我的有序遍歷輸出按預順序正確,而后順序輸出不正確。 我的代碼是

public class binarytree {

static class Node{

    Node left;
    Node right;
    int value;

    public Node(int value)
        {
        this.value = value;
        this.left = null;
        this.right = null;
        }
    }

public void creatBST()
    {
    Node root = new Node(4);
    System.out.println("Binary Search tree with root = "+ root.value);
    insert(root,1);
    insert(root,2);
    insert(root,3);
    insert(root,6);
    insert(root,5);
    insert(root,7);
    //insert(root,1);
    System.out.println("Binary Search Tree in In Order Traversal is:");
    printInOrder(root);

    System.out.println("Binary Search Tree in Pre Order Traversal is:");
    printPreOrder(root);

    System.out.println("Binary Search Tree in Post Order Traversal is:");
    printPostOrder(root);
    }

public void insert(Node node, int value)
    {
    if(value < node.value)
        {
        if(node.left != null)
            {
            insert(node.left, value);       
            }
        else
            node.left = new Node(value);
        }
    else if(value > node.value)
        {
        if(node.right != null)
            {
            insert(node.right, value);
            }
        else
            node.right = new Node(value);
        }
    }


public void printInOrder(Node node)                           //In Order Traversal
    {
    //Node node = this;
    if(node != null)
        {
        //System.out.println("Binary Search Tree in In Order Traversal is:");
        printInOrder(node.left);
        System.out.println(node.value);
        printInOrder(node.right);
        }
    }

public void printPreOrder(Node node)                      // Pre Order Traversal
{
//Node node = this;
if(node != null)
    {
    //System.out.println("Binary Search Tree in In Order Traversal is:");
    System.out.println(node.value);
    printInOrder(node.left);

    printInOrder(node.right);
    }
}

public void printPostOrder(Node node)                   // Post Order traversal
{
//Node node = this;
if(node != null)
    {
    //System.out.println("Binary Search Tree in In Order Traversal is:");

    printInOrder(node.left);

    printInOrder(node.right);
    System.out.println(node.value);
    }
}




public static void main(String args [])
    {
    binarytree obj = new binarytree();
    obj.creatBST();
    //obj.printInOrder();
    }
}

預購我得到的輸出是

4-1-2-3-5-6-7

雖然不應該

4-1-2-3-6-5-7

同樣,對於后訂單輸出是

1-2-3-5-6-7-4

雖然應該

3-2-1-5-7-6-4

不知道我在哪里錯。

您的預訂和后訂單都僅在第一個通話中是預訂/后訂單。 之后,您將按順序移動。

嘗試更改您的函數以遞歸調用自己而不是按順序調用。

暫無
暫無

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

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