2017-05-25 18 views
0

Ich brauche eine Art und Weise, recursive/non recursive drucken BST von groß nach kleinen Nummer, Beispiel: für diesen Baum BST werfen, kam die Antwort, wieDrucke binärer Suchbaum von größter Anzahl an kleinsten Java mit

drucken BST

möchte ich bekommen: 25,20,16,15,10,9,8,6,4,3,2,1

weiß ich, wie es umgekehrt zu drucken: (in order)

public void displaySmallToBig(Node root){ // inorder 
    if(root!=null){ 
     displaySmallToBig(root.left); 
     System.out.print(" " + root.data); 
     displaySmallToBig(root.right); 
    } 
} 

Wird gedruckt: 1 2 3 4 4 6 8 9 10 15 16 20 25

Vielen Dank im Voraus 2 alle Helfer.

ganze Klasse:

package com.company; 

public class BinarySearchTree { 
    public static Node root; 
    public BinarySearchTree(){ 
     this.root = null; 
    } 


    public void displaySmallToBig(Node root){ // inorder 
     if(root!=null){ 
      displaySmallToBig(root.left); 
      System.out.print(" " + root.data); 
      displaySmallToBig(root.right); 
     } 
    } 

    public void displayBigToSmall(Node root){ 
     if(root!=null){ 
      displaySmallToBig(root.right); 
      System.out.print(" " + root.data); 
      displaySmallToBig(root.left); 
     } 
    } 

    public static void main(String arg[]){ 
     BinarySearchTree b = new BinarySearchTree(); 
     b.insert(3); 
     b.insert(8); 
     b.insert(1); 
     b.insert(4); 
     b.insert(6); 
     b.insert(2); 
     b.insert(10); 
     b.insert(9); 
     b.insert(20); 
     b.insert(25); 
     b.insert(15); 
     b.insert(16); 

     System.out.println("Original Tree : "); 

     System.out.println("displaySmallToBig"); 
     b.displaySmallToBig(b.root); 
     System.out.println(""); 
     System.out.println("displayBigToSmall"); 
     b.displayBigToSmall(b.root); 
    } 
} 

class Node{ 
    int data; 
    Node left; 
    Node right; 
    public Node(int data){ 
     this.data = data; 
     left = null; 
     right = null; 
    } 
} 
+0

Wenn Sie wissen, wie man in der Reihenfolge druckt, der n Sie müssen nur die Reihenfolge umschalten ... Versuchen Sie nun, den Teil in Ihrem Code zu identifizieren, der die Reihenfolge bestimmt. – Turing85

+0

Ich weiß, aber aus irgendeinem Grund druckt es nicht die richtige Reihenfolge, es ist print: 4 6 8 9 10 15 16 20 25 3 1 2 – Start

+0

Die Methode 'einfügen (...)' fehlt. – Turing85

Antwort

3

einfach die Reihenfolge der Traversal wechseln, so dass Sie mit der rechten zuerst durchqueren, dann links:

public void displaySmallToBig(Node root) { 
    if (root != null) { 
     displaySmallToBig(root.right); 
     System.out.print(" " + root.data); 
     displaySmallToBig(root.left); 
    } 
} 

Demo hier:

Rextester

+0

Es funktioniert nicht gut, es ist print: 4 6 8 9 10 15 16 20 25 3 1 2 – Start

+1

@Start Schauen Sie sich die Demo an, die ich eingerichtet habe, mein Code scheint zu funktionieren. –

+0

Jetzt arbeiten, vielen Dank! – Start