二叉树的递归遍历

【链表存储结构】

/* 定义二叉树结构 */
typedef struct TreeNode *BinTree;
typedef BinTree Position;
struct TreeNode{
    ElementType Data;
    BinTree Left;
    BinTree Right;
}

【先序遍历】
先访问根节点,先序遍历其左子树,先序遍历其右子树。

二叉树的递归遍历_第1张图片
先序遍历
/* 先序遍历 */
/* 遍历顺序 ABDFE  CGHI */
void PreOrderTraversal(BinTree BT)
{
    if(BT){
        printf("%d",BT->Data);
        PreOrderTraversal(BT->Left);
        PreOrderTraversal(Bt->Right);
    }
}

【中序遍历】

二叉树的递归遍历_第2张图片
中序遍历
/* 中序遍历 */
/* 左子树->根节点->右子树 
   D B E F A G H C I */
void PreOrderTraversal(BinTree BT)
{
    if(BT){
        PreOrderTraversal(BT->Left);
        printf("%d",BT->Data);
        PreOrderTraversal(Bt->Right);
    }
}

【后序遍历】

二叉树的递归遍历_第3张图片
后序遍历
/* 后序遍历 */
/* 左子树->右子树-> 根节点
   D E F B H G I C A */
void PreOrderTraversal(BinTree BT)
{
    if(BT){
        PreOrderTraversal(BT->Left);
        PreOrderTraversal(Bt->Right);
                printf("%d",BT->Data);
    }
}

你可能感兴趣的:(二叉树的递归遍历)