中序的完全二叉树层序遍历输出
https://pintia.cn/problem-sets/1077214780527620096/problems/1108407010212667394
Complete Binary Search Tree
A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties:
The left subtree of a node contains only nodes with keys less than the node’s key.
The right subtree of a node contains only nodes with keys greater than or equal to the node’s key.
Both the left and right subtrees must also be binary search trees.
A Complete Binary Tree (CBT) is a tree that is completely filled, with the possible exception of the bottom level, which is filled from left to right.
Now given a sequence of distinct non-negative integer keys, a unique BST can be constructed if it is required that the tree must also be a CBT. You are supposed to output the level order traversal sequence of this BST.
Input Specification:
Each input file contains one test case. For each case, the first line contains a positive integer N (≤1000). Then N distinct non-negative integer keys are given in the next line. All the numbers in a line are separated by a space and are no greater than 2000.
Output Specification:
For each test case, print in one line the level order traversal sequence of the corresponding complete binary search tree. All the numbers in a line must be separated by a space, and there must be no extra space at the end of the line.
1 | Sample Input: |
1 | Sample Output: |
分析
- 输入一串数字
- 将数字进行排序(因为时二叉搜索树,需要排序)
- 用排序结果构建一个中序遍历的完全二叉树
- 将完全二叉树层序遍历输出
和Tree Traversals Again有点像。
参考了一个大佬的博客。因为输入输出都是一串数字,所以没有构建树,根据其关联、规律直接找到层序遍历时的下标,得到这个数组。
从i=1开始,i 2为左儿子的下标,i 2 + 1为右儿子的下标。
参考博客:http://ytwzju.com/2018/07/26/PAT%20Complete%20Binary%20Search%20Tree/
常规方法需要注意,中序遍历生成树之前,先生成了一个完全二叉树,然后将输入的数据填入树中。
https://blog.csdn.net/hsapyzx/article/details/52958006
代码
1 |
|