zoukankan      html  css  js  c++  java
  • 二叉树排序

    #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;
    }
  • 相关阅读:
    iOS企业证书开发的APP证书过期时间监控
    事件冒泡,事件捕获
    倒计时
    获取多个div,点击第几个,显示第几个
    js继承
    javascript基础知识总结
    大型web系统高效应用方法(转载)
    数据库(内联,外联,交叉联)
    .net零碎基础知识点不完全小结
    C#的内存管理:堆、栈、托管堆与指针(转)
  • 原文地址:https://www.cnblogs.com/to7str/p/2728578.html
Copyright © 2011-2022 走看看