二叉树的操作有哪些呢
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,本篇文章为大家展示了二叉树的操作有哪些呢,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。之前实现过二叉树的创建,非递归遍历和递归遍历。现在添加一些其他的操作,包
千家信息网最后更新 2024年11月23日二叉树的操作有哪些呢
本篇文章为大家展示了二叉树的操作有哪些呢,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
之前实现过二叉树的创建,非递归遍历和递归遍历。现在添加一些其他的操作,包括:
销毁一棵树
计算树的深度(高度)
.计算叶子节点的个数
计算所有节点的个数
复制二叉树
具体见代码:
#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安全错误
数据库的锁怎样保障安全
株洲net软件开发暑假班
学校gis软件开发实训总结
快速搭建http服务器
专业网络安全解决方案费用
弄一个个人服务器有什么用
玫瑰科技互联网
软件开发企业成本怎么归集
pc改服务器
浙江常见软件开发性价比
博兴食品软件开发报价
有32k受管理的服务器
妊娠安全用药数据库
一个软件开发的时间
澳洲非八大网络安全专业
为什么服务器会出问题
网络技术维护费账务处理
英文介绍微波网络技术论文
11月份网络安全法
计算机网络技术及其实验报告
高校网络安全应急演练
C 高级软件开发工程师
hcna网络技术考试
实时数据库 测试方案
数据库分辨大小写
河北企业软件开发价位
限制孩子玩手机时间软件开发
杭州机械备件管理软件开发
数据库层主要功能
山西电视墙服务器
服务器安全性方