给定一个存储完整二进制搜索树的数组,编写一个函数以升序有效打印给定数组。
例如,给定一个数组[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)