二叉树遍历应用

【例】输出二叉树中的叶子节点

/* 先序遍历输出叶子节点 */
void PreOrderTraversal(BinTree BT)
{
    if(BT){
        if(!BT->Left&&!BT->Right)  //如果没有左右儿子节点
            printf("%d",BT->Data);
        PreOrderTraversal(BT->Left);
        PreOrderTraversal(Bt->Right);
    }
}

【例】求二叉树高度

/* 求二叉树高度 
    Height=MAX(Hl,Hr)+1 
    后序遍历实现 
    递归 */
int PosOrderGetHeight(BinTree BT)
{
    int HL,HR,MaxH;
    if(BT){
        HL=PosOrderGetHeight(BT->Left); //左子树高度
        HR=PosOrderGetHeight(BT->Right); //右子树高度
        MaxH=(HL>HR)?HL:HR;
        return(MaxH+1); 
    }
    else return 0; 
}

你可能感兴趣的:(二叉树遍历应用)