二叉树的遍历
常见的二叉树的遍历有三种方式:先序遍历(根结点,左子树,右子树)
中序遍历(左子树,根结点,右子树)
后续遍历(左子树,右子树,根结点)
这三种方式有分别可以用递归和非递归来实现,相对二叉树的遍历递归比非递归简单。其实还有一种层序遍历,是利用队列访问这里不做解释。
一、递归遍历
1、先序遍历
先序遍历就是从根结点开始,把根结点当成一个子问题,先访问父结点,然后访问左子树,等左子树全部访问完后,再访问右子树。 每访问到一个节点时,都把这个节点当成子问题进行上述顺序先访问父节点,然后直到左子树为空或者左子树已经访问过了时,再访问右子树。
void _PrevOrder(Node* root)
{
if (root == NULL)
{
return;
}
cout << root->_data << " ";
_PrevOrder(root->