2017-05-25 77 views
0

我需要一种方法最小,recursive/non recursive打印BST从最大到最小数, 例如: 这棵树 BST传来一掷如何打印BST打印二叉搜索树的数量最多使用Java

答案

我想获得:25,20,16,15,10,9,8,6,4,3,2,1

我知道去打印相反的方向:(in order)

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

将打印:1 2 3 4 4 6 8 9 10 15 16 20 25

在此先感谢2所有的帮手。

所有类:

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

如果你知道如何按顺序打印, ñ您只需“切换订单”即可...现在尝试确定代码中用于确定订单的部分。 – Turing85

+0

我知道,但由于某种原因它不打印正确的顺序,这是打印:4 6 8 9 10 15 16 20 25 3 1 2 – Start

+0

方法'插入(...)'缺失。 – Turing85

回答

3

只需切换穿越,这样你遍历权第一的顺序,然后离开:

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

演示在这里:

Rextester

+0

它都不尽如人意,它的打印:4 6 8 9 10 15 16 20 25 3 1 2 – Start

+1

@启动看一看演示我的设置,我的代码似乎是工作。 –

+0

现在工作,非常感谢! – Start