二叉树的各种遍历,包括前序,中序,后序(递归/非递归),从上往下层次遍历,从下往上层次遍历
思路:
前序,中序,后序的非递归遍历:基本是手动模拟递归栈调用,后序比较麻烦
正向按层遍历:利用队列,从对头出节点,然后把该节点的左孩子,右孩子加入对尾,依此类推
反向按层遍历:利用队列和栈,从对头出节点,放入栈中,然后把该节点的左孩子,右孩子加入对尾,依此类推
代码:
二叉树的各种遍历,包括前序,中序,后序(递归/非递归),从上往下层次遍历,从下往上层次遍历
思路:
前序,中序,后序的非递归遍历:基本是手动模拟递归栈调用,后序比较麻烦
正向按层遍历:利用队列,从对头出节点,然后把该节点的左孩子,右孩子加入对尾,依此类推
反向按层遍历:利用队列和栈,从对头出节点,放入栈中,然后把该节点的左孩子,右孩子加入对尾,依此类推
代码: