本文共 1803 字,大约阅读时间需要 6 分钟。
#includeconst int N = 100010; int l[N], r[N], idx, e[N]; void init() { idx = 2; r[0] = 1; l[1] = 0; void dele(int k) { l[r[k]] = l[k]; r[l[k]] = r[k]; void add(int k, int x) { e[idx] = x; l[r[k]] = idx; r[idx] = r[k]; l[idx] = k; r[k] = idx; idx++; int main() { init(); int n; cin >> while(n--) { int k, x; string a; cin >> if(a == "L") { cin >> add(0, x); } else if(a == "D") { cin >> dele(k+1); } else if(a == "R") { cin >> add(l[1], x); } else if(a == "IR") { cin >> k >> x >> add(k+1, x); } else if(a == "IL") { cin >> k >> x >> add(l[k+1], x); } for(int i = r[0]; i != 1; i = r[i]) { // ignore the ends cout << e[i] << " "; }
上述代码表示一个实现二叉树操作的C++程序。程序中定义了一个动态二叉树的数据结构,使用数组来维护左右指针和节点值。主要操作包括插入节点和删除节点,节点的插入和删除操作支持在树的左侧、中间和右侧进行。程序的核心流程包括初始设置、输入处理和树的遍历输出。
代码功能涵盖了二叉树的主流操作,能够实现按左、右以及插入和删除操作。输出部分采用了逆序遍历的方式输出节点的信息,具体输出逻辑需要通过程序运行后才能具体查看。
转载地址:http://otitz.baihongyu.com/