二叉树的操作有哪些呢
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,本篇文章为大家展示了二叉树的操作有哪些呢,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。之前实现过二叉树的创建,非递归遍历和递归遍历。现在添加一些其他的操作,包
千家信息网最后更新 2025年01月24日二叉树的操作有哪些呢
本篇文章为大家展示了二叉树的操作有哪些呢,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
之前实现过二叉树的创建,非递归遍历和递归遍历。现在添加一些其他的操作,包括:
销毁一棵树
计算树的深度(高度)
.计算叶子节点的个数
计算所有节点的个数
复制二叉树
具体见代码:
#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安全错误
数据库的锁怎样保障安全
松江区银联数据库直销价
数据库表一栏内有多个内容
网络数据库技术第三版
如何查找网页版的数据库类型
数据库要不要建外键
服务器装进机柜里有顺序要求吗
工业网络安全指南
网络技术发展的动力
数据库安装时出现ATL失败
云丁网络技术有限公司股权
网络安全民法典开头怎么写
在服务器建一个共享文件夹
notes 数据库
医疗行业网络安全事故
服务器系统不对备案时能改吗
北京燕园筹网络技术有限公
数据库系统的两种索引类型
suma服务器安装centos
ibm i 服务器
vpn中的服务器是什么
给路由器设置代理服务器
电子信息网络技术方面
数据库操作access
网络安全涉密企业
超市销售界面与数据库的连接
软件开发技术岗
正规的浪潮服务器店面在哪里
怎么获取数据库的标识列
管家婆数据库放在云
网络安全渗透漏洞扫描