数据结构之二叉树的遍历(复习)

数据结构之二叉树的遍历(复习)

一棵二叉树由根结点、左子树和右子树三部分组成,若规定 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:

层序遍历

  • 按层,从上到下,从左到右遍历
posted @ 2021-03-27 22:07  fun-debug  阅读(24)  评论(0)    收藏  举报