博客
关于我
双向链表
阅读量:580 次
发布时间:2019-03-11

本文共 1791 字,大约阅读时间需要 5 分钟。

    

            #include 
const 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/

你可能感兴趣的文章
微积分(三)
查看>>
Oracle
查看>>
软件工程应用
查看>>
数据科学
查看>>
论文报告/前沿文章
查看>>
函数与高级变量
查看>>
键盘事件
查看>>
弱监督
查看>>
二 召回算法
查看>>
2020-11月计划实施表
查看>>
个人常用网络
查看>>
折线图
查看>>
常识:
查看>>
注册页面案例
查看>>
np.bincount(x)的简单解释
查看>>
一些面试的准备的回答
查看>>
django中文件的上传问题
查看>>
LeetCode Top-100 T22-括号生成
查看>>
svg基础+微信公众号交互(二)
查看>>
webstorm 自定义快捷键
查看>>