to7str

   ::  ::  :: 联系 ::  :: 管理
#include<stdlib.h>
#include<stdio.h>

typedef struct node  
{  
    struct node * lchild;  
    struct node * rchild;  
    int data;  
}BiTNode,*BiTree;  

/*生成节点*/  
BiTNode *MakeNode(int item)  
{  
    BiTNode * pnode = (BiTNode *)malloc(sizeof(BiTNode));  
    if(pnode)  
    {  
        pnode->data = item;  
        pnode->lchild = NULL;  
        pnode->rchild = NULL;  
    }  
    return pnode;     
}  

void insert(BiTree *root,  BiTree new)
{
    BiTree p = *root;
    if(NULL == *root)/*只针对root节点*/
    {
        *root = new;/*!!!!!!二级指针!!!!!*/
        return;
    }
    if(new->data < p->data)
    {
        if(NULL == p->lchild)/*找到了插入点*/
        {
            printf("%d<--%d\n",  p->data, new->data);
            p->lchild = new;
            return;
        }
        else
        {
            insert(&(p->lchild), new);
        }
    }
    else if(new->data > p->data)
    {
        if(NULL == p->rchild)/*找到了插入点*/
        {
            printf("%d-->%d\n", new->data, p->data );
            p->rchild = new;
            return;
        }
        else
        {
            insert(&(p->rchild), new);
        }        
    }
    return;
}


/*中序遍历二叉树*/  
void InOrderTraverse(BiTree tree )  
{  
    BiTNode * pnode = tree;  
    if(pnode)  
    {  
        InOrderTraverse(pnode->lchild );  
        printf("%d ", pnode->data);  
        InOrderTraverse(pnode->rchild );  
    }  
}  

void ClearBiTree(BiTree tree)  
{  
    BiTNode * pnode = tree;  
    if(pnode->lchild!=NULL)  
        ClearBiTree(pnode->lchild);  
  
    if(pnode->rchild!=NULL)  
        ClearBiTree(pnode->rchild);  
  
    if(NULL != pnode)
        free(pnode);
}  


int main(void )
{
    int arr[] = {6, 8, 9, 7, 1, 4, 2, 3, 5, 4, 6, 0};
    int i;
    BiTree root = NULL;
    for(i = 0; i < sizeof(arr)/sizeof(int); i++)
    {
        insert(&root, MakeNode(arr[i]) );
    }
    InOrderTraverse(root);
    printf("\n\r");
    ClearBiTree(root);
    

    return 0;
}
posted on 2012-10-17 21:48  to7str  阅读(238)  评论(0编辑  收藏  举报