📜  代表BST的给定数组的排序打印

📅  最后修改于: 2021-05-24 21:54:11             🧑  作者: Mango

给定一个存储完整二进制搜索树的数组,编写一个函数以升序有效打印给定数组。
例如,给定一个数组[4,2,5,1,3],该函数应打印1,2,3,4,5

解决方案:
BST的顺序遍历以升序打印。唯一的技巧是在标准有序树遍历中修改递归终止条件。

执行:

C++
// C++ Code for Sorted order printing of a
// given array that represents a BST
#include
using namespace std;
 
void printSorted(int arr[], int start, int end)
{    
    if(start > end)
        return;
     
    // print left subtree
    printSorted(arr, start*2 + 1, end);
     
    // print root
    cout << arr[start] << " ";
     
    // print right subtree
    printSorted(arr, start*2 + 2, end);
}
 
int main()
{
    int arr[] = {4, 2, 5, 1, 3};
    int arr_size = sizeof(arr)/sizeof(int);
    printSorted(arr, 0, arr_size-1);
    getchar();
    return 0;
}
 
// This code is contributed by Akanksha Rai


C
// C Code for Sorted order printing of a
// given array that represents a BST
#include
 
void printSorted(int arr[], int start, int end)
{    
  if(start > end)
    return;
 
  // print left subtree
  printSorted(arr, start*2 + 1, end);
 
  // print root
  printf("%d  ", arr[start]);
 
  // print right subtree
  printSorted(arr, start*2 + 2, end); 
}
 
int main()
{
  int arr[] = {4, 2, 5, 1, 3};
  int arr_size = sizeof(arr)/sizeof(int);
  printSorted(arr, 0, arr_size-1);
  getchar();
  return 0;
}


Java
// JAVA Code for Sorted order printing of a
// given array that represents a BST
class GFG{
     
private static void printSorted(int[] arr, int start,
                                        int end) {
        if(start > end)
            return;
             
        // print left subtree
        printSorted(arr, start*2 + 1, end);
             
        // print root
        System.out.print(arr[start] + " ");
             
        // print right subtree
        printSorted(arr, start*2 + 2, end);
        }
         
    // driver program to test above function
    public static void main(String[] args) {
        int arr[] = {4, 2, 5, 1, 3};
             
        printSorted(arr, 0, arr.length-1);
    }
}
     
// This code is contributed by Arnav Kr. Mandal.


Python3
# Python3 Code for Sorted order printing of a
# given array that represents a BST
def printSorted(arr, start, end):
    if start > end:
        return
     
    # print left subtree
    printSorted(arr, start * 2 + 1, end)
     
    # print root
    print(arr[start], end = " ")
     
    # print right subtree
    printSorted(arr, start * 2 + 2, end)
 
# Driver Code   
if __name__ == '__main__':
    arr = [4, 2, 5, 1, 3]
    arr_size = len(arr)
    printSorted(arr, 0, arr_size - 1)
 
# This code is contributed by PranchalK


C#
// C# Code for Sorted order printing
// of a given array that represents a BST
using System;
 
class GFG
{
static private void printSorted(int []arr,
                                int start,
                                int end)
{
    if(start > end)
        return;
         
    // print left subtree
    printSorted(arr, start * 2 + 1, end);
         
    // print root
    Console.Write(arr[start] + " ");
         
    // print right subtree
    printSorted(arr, start * 2 + 2, end);
    }
     
// Driver Code
static public void Main(String []args)
{
    int []arr= {4, 2, 5, 1, 3};
         
    printSorted(arr, 0, arr.Length - 1);
}
}
     
// This code is contributed by Arnab Kundu


PHP
 $end)
        return;
         
    // print left subtree
    printSorted($arr, $start * 2 + 1, $end);
         
    // print root
    echo($arr[$start] . " ");
         
    // print right subtree
    printSorted($arr, $start * 2 + 2, $end);
}
     
// Driver Code
$arr = array(4, 2, 5, 1, 3);
     
printSorted($arr, 0, sizeof($arr) - 1);
 
// This code is contributed by Code_Mech.


Javascript


输出:

1 2 3 4 5 

时间复杂度: O(n)