数据结构之二叉树的遍历(复习)
一棵二叉树由根结点、左子树和右子树三部分组成,若规定 D、L、R 分别代表遍历根结点、遍历左子树、遍历右子树
- DLR--前序遍历(先访问根结点然后遍历左子树,最后遍历右子树。 )
- LDR--中序遍历(先遍历左子树然后访问根节点,最后遍历右子树。 )
- LRD--后序遍历(先遍历左子树然后遍历右子树,最后访问根节点。)
算法实现
typedef struct TreeNode
{
int data;
TreeNode * left;//左节点
TreeNode * right;//右节点
TreeNode * parent;
}TreeNode;
void pre_order(TreeNode* Node)//前序遍历递归算法
{
if(Node == NULL)
return;
printf("%d ", Node->data);//显示节点数据,可以更改为其他操作。在前面
pre_order(Node->left);
pre_order(Node->right);
}
void middle_order(TreeNode* Node)//中序遍历递归算法
{
if(Node == NULL)
return;
middle_order(Node->left);
printf("%d ", Node->data);//在中间
middle_order(Node->right);
}
void post_order(TreeNode* Node)//后序遍历递归算法
{
if(Node == NULL)
return;
post_order(Node->left);
post_order(Node->right);
printf("%d ", Node->data);//在最后
}
ps:
层序遍历