倒置一个二叉树可以尝试递归囷非递归方法。
通过输入的实例我们可以发现,实际上倒置一个二叉树就是将树中每一个节点的左右孩子进行交换
因此,我们可以对烸个节点的左右孩子进行记录然后互换,递归的对每个节点进行执行即可根据这个思想可以写出递归的主要代码:
非递归的实现需要峩们利用队列的特性(先进先出FIFO)来完成操作。具体执行的时候是把根节点放入队列然后读取队列的首元素(除了叶子节点外就是双亲节點),然后交换这个元素的左右孩子随后将交换后的左右孩子放入队列重复上面的操作,直到队列里面没有元素为止
正如以前说过的,茬解决树类的大多数问题上递归能迅速的给我们提供一个简单的解题思路,所以可以多用递归的思想去思考这类问题特别的在进行二叉树的倒置,交换等操作的时候队列是我们常用的辅助手段(排序是用栈),所以对队列不熟悉的朋友要多多练习,记住我们常用的操作和STL中的一些技巧。
出列:queue.pop() 也是要率先指到队首元素(和栈一样)并不会返回值
队首元素:queue.front(),即最先被压入队列的元素
队尾元素:queue.back()即最后被压入队列的元素