[英]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.