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;
    }
  • 相关阅读:
    oracle里某列插入多行数据
    子类与父类的一些关系
    math.round()的值怎么取的
    oracle replace函数
    spring5.1.5使用的jackson依赖版本
    eclipse设置新建jsp页面的默认编码为utf-8
    c3p0启动失败
    sql的左联右联合内联的区别
    eclipse安装spring tools插件的问题
    HTML点击按钮button跳转页面的四种方法
  • 原文地址:https://www.cnblogs.com/to7str/p/2728578.html
Copyright © 2011-2022 走看看