AcWing 3595:二叉排序树 ← vector
【题目来源】
【题目描述】
二叉排序树,也称为二叉查找树。
可以是一颗空树,也可以是一颗具有如下特性的非空二叉树:
1.若左子树非空,则左子树上所有节点关键字值均不大于根节点的关键字值;
2.若右子树非空,则右子树上所有节点关键字值均不小于根节点的关键字值;
3.左、右子树本身也是一颗二叉排序树。
现在给你 N 个关键字值各不相同的节点。
要求你将这些节点按顺序插入一个初始为空树的二叉排序树中。
每次成功插入一个节点后,求其相应的父亲节点的关键字值,如果没有父亲节点,则输出 −1。
【输入格式】
第一行包含整数 N,表示待插入的节点数。
第二行包含 N 个互不相同的正整数,表示要顺序插入节点的关键字值。
【输出格式】
N 行。
【输入样例】
5
2 5 1 3 4
【输出样例】
-1
2
2
5
3
【数据范围】
1≤N≤100,
节点关键字值取值范围 [1,10^8]。
【算法分析】
● 二叉排序树(Binary Sort Tree,BST),又称二叉搜索树。二叉排序树或者是一棵空树,或者是具有下列性质的二叉树。
(1)若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(2)若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
(3)它的左、右子树也分别为二叉排序树。
● 二叉排序树遵循“左小右大”规则,树中没有相同关键字的结点。
● 中序遍历一棵二叉排序树可以得到一个结点值递增的有序序列。
● 东方博宜OJ 2195:二叉排序树:
【算法代码】
【参考文献】

浙公网安备 33010602011771号