续链式二叉树(层序遍历和习题)

先讲讲相关的练习题~层序遍历压轴!先提前透露昂,它要使用队列。

先来个单值二叉树

 相同的值,那不就是父节点的分别和左右孩子的val相等就行了嘛,相等就继续往下走,但是,如果不想等,就返回一个false呗,最后要是走到结尾root=NULL,那不就是对喽~全相等嘛,然后最后的返回值,思考一下,是不是他的左右子树都必须是true,才能是完全的单值二叉树!


 最大深度,那就比较简单啦~不就是谁大返回谁嘛,root=0那就返回0呗,每次比较一下他的长度,左子树长返回左子树,右子树长,返回右子树,然后返回的时候要记得给它+1!因为还有返回的这一层呢昂~,最好再设置一个变量保存当前长度嘞,不然你每次比较都要下去找一遍,数据比较少还好,多了,那复杂度真是指数上升昂。


 翻转,那更是简单啦~你让他左孩子指向右孩子,右孩子指向左孩子,不就行了嘛,然后递归,但是要记得有一个临时变量保存一下左孩子嘞~不然右孩子怎么赋值给左孩子呢


 判断两个树是否相等~这个也比较简单呢,如果两个都走到NULL,那不就是相等嘛,返回true,如果只有一个空或者值不想等,直接返回false就行啦~

 


 检查他是否轴对称,大概思路就是,一个从左边儿走,一个从右边儿走,然后就和检查两个树是否一样有点类似了,如果左和右都能走到空,那就证明左右对称嘞,如果只有一个为空,或者值不相等,那就不对称啦,返回false就完事儿啦

 


 这道题,也和检查两个树是否相同有关昂~

你想想,是不是从这个大树层级往下看嘞,如果他俩都同时为空……~~~但是!这有一个魔鬼细节昂,在子函数中,应该满足左树&&右树,因为是判断当前两棵树是否相等,而外面儿,只需要||就可以啦,只要这棵树中,左子树或者右子树等于那颗树就可以啦

 


二叉树的节点问题。


 

二叉树中,叶子节点个数的问题

他的左右子树只要都=NULL,那就是叶子节点了嘛,那就这个情况下,返回1,然后统计左右子树的情况呗~

 


二叉树的销毁

分别销毁左右子树,最终释放根节点,这儿也可以传一级指针,但是就没办法将root置空,得在外面儿手动置空呢


 最后就是层序遍历啦,这个借助了队列的特性,先创建一个队列昂,先把根节点放进去~然后取根节点,打印,再放入这个根节点的左右孩子,如此循环往复,大功方可告成

 这段代码,是不为空才入进去,所以打印滴时候没有空昂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值