先讲讲相关的练习题~层序遍历压轴!先提前透露昂,它要使用队列。
先来个单值二叉树
相同的值,那不就是父节点的分别和左右孩子的val相等就行了嘛,相等就继续往下走,但是,如果不想等,就返回一个false呗,最后要是走到结尾root=NULL,那不就是对喽~全相等嘛,然后最后的返回值,思考一下,是不是他的左右子树都必须是true,才能是完全的单值二叉树!

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

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

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


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

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

二叉树的节点问题。

二叉树中,叶子节点个数的问题
他的左右子树只要都=NULL,那就是叶子节点了嘛,那就这个情况下,返回1,然后统计左右子树的情况呗~
二叉树的销毁
分别销毁左右子树,最终释放根节点,这儿也可以传一级指针,但是就没办法将root置空,得在外面儿手动置空呢
最后就是层序遍历啦,这个借助了队列的特性,先创建一个队列昂,先把根节点放进去~然后取根节点,打印,再放入这个根节点的左右孩子,如此循环往复,大功方可告成
这段代码,是不为空才入进去,所以打印滴时候没有空昂
&spm=1001.2101.3001.5002&articleId=152011882&d=1&t=3&u=d6acccce15bf4e7f941fdba8c296b0e9)
1003

被折叠的 条评论
为什么被折叠?



