二叉树结尾——销毁,层序遍历与判断完全二叉树
本文之后,笔者的二叉树学习暂时告一段落,更难的二叉树学习笔者将在C++中在研究,本文要研究的问题比较简单,首先我们要会销毁二叉树,销毁二叉树当然也也要用递归思想,但是要注意顺序,根节点是找到左右子节点的关键,所以不能没有根结点,所以不能先删除根节点,笔者不再过多赘述,读者直接看代码即可:
下面的问题就比较困难了,层序遍历这个二叉树,首先我们要知道什么是层序遍历,就是一层一层遍历,如何遍历并打印呢?这里需要用到之前的知识——队列,为什么呢?因为队列就是经典的先进先出,所以遍历的时候,根节点进,根节点出,根节点左孩子进,右孩子出,诸如此类,因为我们尝试用队列,当然,这种算法又叫BFS方法,下面看代码:
观察上面的代码,首先初始化,然后进行了一次入队操作,只要根结点不为0,那么就入队,不过需要注意的是,这里进入队列的不是结点,更不是结点对应的数值,应该是指向结点的指针,引起需要用&q,然后就是正常的操作了。
最后,在层序遍历的基础上,进行判断是否为完全二叉树的操作:
源码笔者放在github上了:数据结构基础/堆,主树 ·z-yi-han/数据结构基础
希望读者能给笔者点赞