新闻详情

新闻详情

首页 / 资讯中心 / 详情

算法(二叉树的遍历)

发布时间:2026/8/30 23:42:33来源:尧图网络
算法(二叉树的遍历)
༺ 个人主页 · 纪念229 ༻我的博客主页༒专栏目录《数据结构》༒༒专栏目录《算法》༒༒专栏目录《MySQL数据库》༒༒专栏目录《前端开发》༒༒其它有趣的计算机知识༒༺世上本没有路走的人多了自然就有了༻这篇文章讲述的是我在刷算法题时遇到的一个题目希望对你有所帮助题目链接https://www.nowcoder.com/practice/4b91205483694f449f94c179883c1fef注意本题代码用的是c语言文章目录1.二叉树遍历1.二叉树遍历题目展示这里讲一个东西ACM模式就是所有代码都是自己写而核心代码模式就是些核心代码像是数组结构体它系统一般会帮你写好代码展示#includestdio.h#includestdlib.htypedefstructtree{charval;structtree*left;structtree*right;}tree;tree*build(char*arr,int*num){//先判断得到的字符是否为#,是的话不用创建节点//同时获得ch可直接赋值给本节点的val里charcharr[(*num)];if(ch#){returnNULL;}tree*node(tree*)malloc(sizeof(tree));node-valch;node-leftbuild(arr,num);node-rightbuild(arr,num);returnnode;//第一次return node返回的是头指针其它递归函数return node是将取到的节点赋值给node的下一个节点//要给节点添加内容首先要给节点创造空间}voidorderprintf(tree*node){if(nodeNULL)return;orderprintf(node-left);printf(%c ,node-val);//建立起此二叉树以后再对二叉树进行中序遍历输出遍历结果//这个意思就是将二叉树根据中序排序打印出来orderprintf(node-right);}intmain(){chararr[100];scanf(%s,arr);intnum0;//构建二叉树并且进行tree*rootbuild(arr,num);//中序遍历orderprintf(root);return0;}具体讲解编一个程序读入用户输入的一串先序遍历字符串根据此字符串建立一个二叉树以指针方式存储。 例如如下的先序遍历字符串 ABC##DE#G##F### 其中“#”表示的是空格空格字符代表空树。建立起此二叉树以后再对二叉树进行中序遍历输出遍历结果。读入用户输入的一串先序遍历字符串这个说明我们要弄一个字符数组然后输入一段数字字符chararr[100];scanf(%s,arr);intnum0;这个num是作为下标遍历数组组织给二叉树最后将数字字符串用先序排序排好根据此字符串建立一个二叉树以指针方式存储用指针方式存储就意味着要创建malloc空间但是算法题不用将它freetree* root build( arr, num);用是为了将num在局部变量的值在全局变量中用得上还有就是不要随便创建指针类型因为创建指针类型都要创建空间我们一般用普通类型就可以这里用指针类型的原因是二叉树由结构体构成找到地址就找到所有二叉树节点二叉树节点怎么来的这里就不赘述了tree*build(char*arr,int*num){//先判断得到的字符是否为#,是的话不用创建节点//同时获得ch可直接赋值给本节点的val里charcharr[(*num)];if(ch#){returnNULL;}tree*node(tree*)malloc(sizeof(tree));node-valch;node-leftbuild(arr,num);node-rightbuild(arr,num);returnnode;//第一次return node返回的是头指针其它递归函数return node是将取到的节点赋值给node的下一个节点//要给节点添加内容首先要给节点创造空间}用先序遍历就要遍历这里的区别就是要加个#字符的判断如果字符是#就返回我们这里#字符作用就是作为空某些场景有用没的话我们就这样node-valarr[(*num)];node-leftbuild(arr,num);node-rightbuild(arr,num);然后我们创建一个指针节点node用malloc给它创建空间这里就说到指针的好处了无论是普通变量还是指针变量都是在栈上函数结束栈空间就返回但是指针变量指向的地址在堆上由maolloc创建堆不会随函数结束就结束所以指针所具有的数据不会消失这里可能有人会问如果遇到#不就结束了吗不会因为是递归它只是结束某个函数其它函数正常进行最后返回二叉树地址建立起此二叉树以后再对二叉树进行中序遍历输出遍历结果。voidorderprintf(tree*node){if(nodeNULL)return;orderprintf(node-left);printf(%c ,node-val);//建立起此二叉树以后再对二叉树进行中序遍历输出遍历结果//这个意思就是将二叉树根据中序排序打印出来orderprintf(node-right);}这句话的意思就是按照中序遍历把先序遍历的二叉树打印出来当然在PowerShell里是一行一行的首先遍历二叉树的节点当然要判断节点是否为NULL是NULL的话直接返回当然既然用到前中后序遍历当然要用递归文章到这就告一段落希望对你有所帮助感谢观看
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

降ai神器真能一键处理论文吗?AIGC降重后必须复查数据与重复率? 2026/8/31 0:37:50

降ai神器真能一键处理论文吗?AIGC降重后必须复查数据与重复率?

降ai神器真能一键处理论文吗?AIGC降重后必须复查数据与重复率? 一键处理环节工具可以帮你做什么作者必须自己完成什么上传与批量调整处理大量规律句式和模板表达上传前备份、脱敏并标记保护内容文本重写改变句子组合和段落节奏核对术语、数据、引文和研…

阅读更多 →
降ai率的免费工具小程序适合毕业论文吗?AIGC降重与查重功能要分清? 2026/8/31 0:37:50

降ai率的免费工具小程序适合毕业论文吗?AIGC降重与查重功能要分清?

降ai率的免费工具小程序适合毕业论文吗?AIGC降重与查重功能要分清? 页面实际提供的功能你能得到什么能否直接用于毕业论文提交AIGC检测一份AI率或相关检测结果只能用于定位,不能自动完成降AI文本改写或AIGC降重一份修改后的文本需要核对事实…

阅读更多 →
降ai网站免费额度够用吗?用最难段测试AIGC降重与查重结果? 2026/8/31 0:37:50

降ai网站免费额度够用吗?用最难段测试AIGC降重与查重结果?

降ai网站免费额度够用吗?用最难段测试AIGC降重与查重结果? 免费额度的用法能验证什么不能证明什么是否推荐随便复制论文开头只能看页面能否正常处理不能代表高疑似段的效果不推荐上传目录、公式或参考文献几乎测不到正常叙述能力不能判断正文是否适合不…

阅读更多 →
免费降低ai检测率的网站怎么筛?先看AIGC报告再决定是否整篇降重查重? 2026/8/31 0:37:50

免费降低ai检测率的网站怎么筛?先看AIGC报告再决定是否整篇降重查重?

免费降低ai检测率的网站怎么筛?先看AIGC报告再决定是否整篇降重查重? AIGC报告呈现的情况先做什么是否马上处理全文只有摘要或少数段落偏高截取完整段落做免费测试不需要,先看小段修改效果多个章节反复出现规律句式抽取摘要、综述、结论各一…

阅读更多 →
降低aigc免费工具支持中文论文吗?AI降重后术语和查重率都要验收? 2026/8/31 0:37:50

降低aigc免费工具支持中文论文吗?AI降重后术语和查重率都要验收?

降低aigc免费工具支持中文论文吗?AI降重后术语和查重率都要验收? 你正在比较的工具适合做什么中文论文最容易出的问题我的判断只提供AIGC检测的工具定位AI率和可疑段落能发现问题,不能直接完成修改可以用来摸底,不能当成降AI工具…

阅读更多 →
信阳空调维修正规服务怎么选?欧米到家全区域及代码故障检修 2026/8/31 0:32:50

信阳空调维修正规服务怎么选?欧米到家全区域及代码故障检修

前言:修空调,先把故障查明白信阳夏季高温高湿、闷热持续时间长,空调一旦出现不制冷、室内机漏水、外机异响、频繁停机等问题,往往会直接影响家庭休息或商铺营业。面对突发故障,用户真正需要的不是一句含糊的“可能要加…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞