Wenn ich implementieren einfügen und Drucken im binären Suchbaum. es druckt nur den ersten Wurzelknoten aus. Bitte helfen Sie warum? Grundlegende Implementierung von binären Suchbäumen, beginnend damit, sie zu lernen und mit ihnen fortgeschrittenere Dinge zu bewegen, aber beim ersten Schritt zu stolpern. Es sieht so aus, als ob die Knoten nicht zum Root-Knoten hinzugefügt werden.Scheint nicht in binäre Suchbaum einfügen
class bstrees{
class Node
{
int data;
Node left;
Node right;
public Node(int data)
{
this.data=data;
this.left=null;
this.right=null;
}
}
Node root;
bstrees(){root=null;}
public void insert(int data){
root=insert_node(root,data);
}
public Node insert_node(Node r,int n){
if(r==null){
Node n1=new Node(n);
//root=n1;
return n1 ;
}
else if(root.data<=n){
insert_node(root.right,n);
}
else{
insert_node(root.left,n);
}
return r;
}
public void print_t(){
print_t(root);
}
private void print_t(Node r){
//System.out.println(r);
if(r!=null){
// System.out.println(r.left);
// System.out.println(r.right);
print_t(r.left);
System.out.println(r.data+" ");
print_t(r.right);
}
}
}
public class BST_prac {
public static void main(String[] args) {
// TODO Auto-generated method stub
bstrees b1=new bstrees();
b1.insert(5);
b1.insert(1);
b1.print_t();
}
}
Es druckt nur 5.
scheint auf den ersten Blick/nicht einmal testen Code, dass Sie zunächst für null überprüfen möchten, finden Sie [hier] (http://stackoverflow.com/questions/5560679/inserting-nodes-into-a -binary-tree-in-java-question) –
Bitte lesen Sie über Java-Namenskonventionen. Klassennamen beginnen Großschreibung; Sie kürzen nicht ab (BinaryTree ist so viel besser zu verstehen als bstree, nicht wahr), und Sie verwenden nur _ _ char für SOME_CONSTANTS, aber nicht für Variablen und Methodennamen. – GhostCat
Und für die nächste Frage: Sie möchten, dass wir unsere Zeit nutzen, um Ihnen zu helfen, also bitte verwenden Sie die Zeit, um Ihren Quellcode richtig zu formatieren. Und schließlich: ** zwei ** öffentliche Methoden, die beide zum Einfügen sind, ist einfach eine super-verwirrende Schnittstelle (wie Sie vielleicht gesehen haben, wie ich zuerst eine falsche Antwort gab). Die Sache ist: Ihr Code ist ** schwer ** zu lesen; obwohl es so einfach sein sollte. Zu guter Letzt: Sie könnten das Problem selbst leicht beheben, indem Sie nach den entsprechenden Aktionen Druckanweisungen in Ihren Code einfügen. oder indem Sie einen ** Debugger ** ausführen. – GhostCat