树结构练习——排序二叉树的中序遍历
题目
Description
在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是——(1).每个节点中包含有一个关键值 (2).任意一个节点的左子树(如果存在的话)的关键值小于该节点的关键值 (3).任意一个节点的右子树(如果存在的话)的关键值大于该节点的关键值。现给定一组数据,请你对这组数据按给定顺序建立一棵排序二叉树,并输出其中序遍历的结果。
Input
输入包含多组数据,每组数据格式如下。
第一行包含一个整数n,为关键值的个数,关键值用整数表示。(n<=1000)
第二行包含n个整数,保证每个整数在int范围之内。
Output
为给定的数据建立排序二叉树,并输出其中序遍历结果,每个输出占一行。
Sample
**Input **
1
2
2
1 20
Output
2
1 20
代码
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define PII pair<int, int> #define x first #define y second const int maxn = 1e6 + 10; const int INF = 0x3f3f3f3f; const ll M = 11092019; const int N = 100010; struct node { int ver; node *L = NULL; node *R = NULL; }; void creat(node *&root, int x) { if (root == NULL) { root = new node; root->ver = x; } else { if (x > root->ver) { creat(root->R, x); } else { creat(root->L, x); } } } void zxbl(node *root) { if (root) { zxbl(root->L); cout << root->ver << " "; zxbl(root->R); } } int main() { int n; while (cin >> n) { node *root = NULL; for (int i = 0; i < n; i++) { int a; cin >> a; creat(root, a); } zxbl(root); cout << endl; } return 0; }
本文作者:kingwzun
本文链接:https://www.cnblogs.com/kingwz/p/15842115.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步