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;
    }
  • 相关阅读:
    ubuntu 上安装ssh
    应用架构设计原则、模式摘录
    经典算法摘录
    CSS3选择器笔记
    微信支付 统一下单 字段 body 为中文时 报【签名错误】解决方案(C# SDK)
    C#获取gif帧数
    C#根据byte前两位获取图片扩展名
    使用Amazon AWS SNS 发送 SMS 消息 .net
    MyCAT全局序列号-数据库方式
    MyCAT入门实践
  • 原文地址:https://www.cnblogs.com/to7str/p/2728578.html
Copyright © 2011-2022 走看看