码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树

时间:2017-07-30 13:45:16      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:==   bsp   最小值   pos   pre   null   class   osi   ace   

建立空树

void MakeEmpty(SearchTree T) {
    if ( T != NULL) {
        MakeEmpty(T->Left);
        MakeEmpty(T->Right);
        free(T);
    }
}

 

查找

Position Find(ElementType X, SearchTree T) {
    if (T == NULL) 
        return NULL;
    if (X < T->Element)
        return Find(X, T->Left);
    else if (X > T->Element)
        return Find(x, T->Right);
    else
        return T;
}

 

最小值

Position FindMin(SearchTree T) {
    if (T == NULL) {
        return NULL;
    }
    else if (T->Left == NULL) {
        return T;
    }
    else
        return FindMin(T-Left);
}

 

插入

SearchTree Insert(ElementType X, SearchTree T) {
    if (T == NULL) {
        T == malloc(sizeof(struct TreeNode));
        if (T == NULL) {
            Error("out of space");
        }
        else {
            T->Element = X;
            T->Left = T-Right = NULL;
        }
    }
    else if (X < T->Element) {
        T->Left = Insert(X, T->Left);
    }
    else 
        T-Right = Insert(X, T->Right);

    return T;
}

 

删除

SearchTree DeleteMin(ElementType X, SearchTree T) {
    Position TmpCell;

    if (T == NULL) {
        Error("Not found");
    }
    else if (X < T->Element)
        T->Left = Delete(X, T->Left);
    else if (X > T->Element)
        T-Right = Delete(X, T->Right);
    else if (T->Left && T->Right) {
        TmpCell = FindMin(T-Right);
        T->Element = TmpCell->Element;
        T->Right = Delete(T->Element, T->Right);
    }
    else {
        TmpCell = T;
        if (T->Left == NULL)
            T = T->Right;
        else if (R->Right == NULL)
            T = T->Left;
        free(TmpCell);
    }
    return T;
}

 

二叉树

标签:==   bsp   最小值   pos   pre   null   class   osi   ace   

原文地址:http://www.cnblogs.com/m2492565210/p/7258739.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!