树的c++实现--建立一棵树
C++ 实现 -- 建立
2023-09-11 14:21:57 时间
树的c++实现--建立一棵树
在学习二分查找树的时候,在递归的问题上遇到不少的问题,在这里和大家分享一下自己的学习过程
我在学习树的知识的时候,没有把树当做一个类,只把一个结点当做一个类。树的实现都在函数中,如果大家有兴趣可以试试在一个类中实现树
为了方便起见,这不同模板,结点的值用整数型
结点类的设计:
结点类中包含一个表示该节点值的val变量,和指向左结点和指向右结点的指针。这三者构成了一个简单的结点
1 class Node{
2 public:
3 int val;
4 Node *left, *right;
5 Node(){right = NULL; left = NULL;}
6 };
建立一棵树主要通过递归来实现
1 Node* build(Node* root, int val){
2 if(root == NULL){
3 root = new Node();
4 root->val = val;
5 return root;
6 }
7 if(val < root->val) root->left = build(root->left, val);
8 else if(val > root->val) root->right = build(root->right, val);
9 return root;
10 }
这里我们用一个函数levelOrder() 来验证我们的树是否正确的建立。该函数是按层遍历树的结点,输出每个结点的值。实现过程在后面的博客会详细的说,现在
直接拿来用就行啦。
1 void levelOrder(Node* root){
2 queue<Node*> q;
3 q.push(root);
4 while(!q.empty()){
5 Node *temp = q.front();
6 q.pop();
7 cout<<temp->val<<" ";
8 if(temp->left) q.push(temp->left);
9 if(temp->right) q.push(temp->right);
10 }
11 }
12 int main(){
13 Node *root = NULL;
14 int t[] = {5,4,6,3,7};
15 for(int i = 0; i < 5; i++) root = build(root, t[i]);
16 levelOrder(root);
17 return 0;}
有疑惑或者更好的解决方法的朋友,可以联系我,大家一起探讨。qq:1546431565
相关文章
- C++ stringstream
- 相对路径转绝对路径C++实现
- 用C++实现一个Log系统
- 【GeekBand】C++设计模式
- 80 C++ - map/multimap容器
- C++程序设计课程同步项目——循环结构程序设计项目任务二
- C++调用Asprise OCR识别图片
- 【c++】:list模拟实现“任意位置插入删除我最强ƪ(˘⌣˘)ʃ“
- 《C++多线程编程实战》——.7 线程模型的实现
- 《数字图像处理与机器视觉——Visual C++与Matlab实现(第2版)》——2.3 MATLAB的图像转换
- 基于QT(C++)+SQL Server 2008 实现相机租赁系统【100010742】
- 基于 C++实现人工智能课程五子棋博弈问题【100010704】
- 基于C++实现的(控制台)景区管理系统【100010671】
- 基于QT(C++)实现(界面)即时通讯软件【100010661】
- 基于C++实现(控制台)图书信息管理系统【100010609】
- 基于 C++实现(控制台)学生成绩管理系统【100010589】
- 基于C++实现(控制台)单位职工管理系统(数据结构)【100010017】
- [第十届蓝桥杯省赛C++B组]组队
- 《计算机系统:核心概念及软硬件实现(原书第4版)》——第2章 C++
- 【华为OD机试真题java、python、c++、jsNode】简单的自动曝光【2022 Q4 100分】(100%通过)
- 【先进的算法】Lasvegas算法3SAT问题(C++实现代码)
- 树的c++实现--建立一棵树
- 采用完成端口(IOCP)实现高性能网络服务器(Windows c++版)
- C/C++实现文件加密器
- C++实现U盘小偷(超详细版)
- C++实操 - 如何判断是使用C还是C++编译器以及编译器版本