求大佬指点,一个二叉树删除所有叶结点算法如下:

yuanzijun_Zaki 2018-11-01 08:40:09
void defoliate(BiTree &T) { if(!T) return ; if(T->left==null&&T->right==null) { delte T; T=null; } else { defoliate(T->left); defoliate(T->right); } }; 萌新刚接触数据结构,有点想不明白,想问问各路大神,这个算法是基于后序遍历的思想吗,还有就是这个算法删除一个非叶结点的叶结点子树后,自己不也变成叶结点了吗,那最后是不是会把所有结点全删除啊?希望大佬能指点一下,树的算法设计题很头疼,不知道该如何下手。
...全文
298 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
云山大侠 2018-11-05
  • 打赏
  • 举报
回复
理解对象这个概念,C语言中的树形结构在C++中会变得非常简单,简单到你可能无法想象。
英雄@末路 2018-11-02
  • 打赏
  • 举报
回复
这个函数的目的就是删除整棵树,不是删一个节点。
删除时候不考虑前后序,必然先叶子后根,不然就丢了
@风轻云淡_ 2018-11-01
  • 打赏
  • 举报
回复
这好像是前序遍历吧,你得先判断这个节点是否为空,是否含有子节点,没有的话 就删除,他是在没有左右节点的情况下被删除,所以他的优先级是最高的,其次是进左子节点,然后是右子节点,不过好像也不是很严谨。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧