二叉树的操作有哪些呢
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本篇文章为大家展示了二叉树的操作有哪些呢,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。之前实现过二叉树的创建,非递归遍历和递归遍历。现在添加一些其他的操作,包
千家信息网最后更新 2025年11月08日二叉树的操作有哪些呢
本篇文章为大家展示了二叉树的操作有哪些呢,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
之前实现过二叉树的创建,非递归遍历和递归遍历。现在添加一些其他的操作,包括:
销毁一棵树
计算树的深度(高度)
.计算叶子节点的个数
计算所有节点的个数
复制二叉树
具体见代码:
#include#include typedef struct Node{ int data; struct Node* lchild; struct Node* rchild;}Node;//创建树Node* create_tree(){ int _data; scanf("%d",&_data); if(_data==100) { return NULL; } Node* root=(Node*)malloc(1*sizeof(Node)); if(root==NULL) { return ; } root->data=_data; root->lchild=create_tree(); root->rchild=create_tree(); return root;}// 前序遍历void pre_print(Node* root){ if(root==NULL) { return ; } printf("%d\t",root->data); pre_print(root->lchild); pre_print(root->rchild);}/****************************************************///销毁一棵树void free_tree(Node* root){ if(root==NULL) return ; free_tree(root->lchild); free_tree(root->rchild); free(root); root=NULL;}//计算树的深度(高度)int depth(Node* root){ if(root==NULL) return 0; int l=depth(root->lchild); int r=depth(root->rchild); if(l>r) { return l+1; } return r+1;}//计算叶子节点的个数int count_leaf(Node* root){ if(root==NULL) { return 0; } if(root->lchild==NULL && root->rchild==NULL) { return 1; } else { return count_leaf(root->lchild)+count_leaf(root->rchild); }}//计算所有节点的个数int count_all_node(Node* root){ if(root==NULL) { return 0; } return count_all_node(root->lchild)+count_all_node(root->rchild)+1;}//复制二叉树Node* copy_tree(Node* root){ if(root==NULL) { return NULL; } Node* l_tree,*r_tree,*root_tree; l_tree=copy_tree(root->lchild); r_tree=copy_tree(root->rchild); root_tree=malloc(1*sizeof(Node)); root_tree->data=root->data; root_tree->lchild=l_tree; root_tree->rchild=r_tree; return root_tree;}int main(int argc, char const *argv[]){ Node* root=create_tree(); pre_print(root); printf("\n"); printf("Depth:%d\n",depth(root)); printf("count_leaf:%d\n",count_leaf(root)); printf("count_all_node:%d\n",count_all_node(root)); Node* copy_root=copy_tree(root); pre_print(root); printf("\n"); return 0;}
上述内容就是二叉树的操作有哪些呢,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
个数
节点
内容
叶子
技能
深度
知识
高度
一棵树
递归
简明
简明扼要
代码
就是
文章
更多
篇文章
行业
资讯
资讯频道
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
手机3d扫描软件开发
网络安全与执法专业考什么
mysql设置数据库端口
数据库中安全性定义语言
网络安全周所体现的主题
计算机网络技术有学位吗
外文数据库的优缺点
未来网络技术创新的趋势
视源股份 网络安全
俄罗斯国防数据库被一锅端
服务器如果带外管理
重庆项目软件开发价格
原神怎么下载其他服务器
服务器主机可以带多少个显卡
acq服务器是什么意思
网络安全毕业后干什么工作
大学老师又搞软件开发
计算机网络技术一年的学费
网络安全定义属性和发展阶段
国家网络安全宣传周宣传通稿
网络安全事故应急演练方案
数据库设计过程中技巧性最强的
网络技术会黑客技术吗
大连销售招聘网络安全方向
软件开发怎么积攒人脉
数据库缓存技术 轮询
网络安全法自哪年实施
数据库adpter报错
三个穷小伙搞软件开发
nsa开源数据库