zoukankan      html  css  js  c++  java
  • 二叉树的学习记录

    1,创建二叉树根

    2,插入二叉树节点

    3,二叉树元素查找

    4,二叉树删除节点

    5,打印二叉树

    /*
    	
    */
    #include <stdlib.h>
    #include <stdio.h>
    
    #define TLEN (sizeof(struct num))
    
    typedef struct num
    {
    	int n;
    	struct num *Ltree;
    	struct num *Rtree;
    }*NumTree;
    
    /*
    	创建二叉树 
    */ 
    NumTree createNewTree(int n)
    {
    	NumTree T=(NumTree)malloc(sizeof(struct num));
    	if(T==NULL)
    	{
    		printf("内存申请失败
    ");
    		return NULL; 
    	}
    	T->n=n;
    	T->Ltree=NULL;
    	T->Rtree=NULL;
    	return T;
    }
    
    /*
    	插入节点 
    */ 
    NumTree insertElement(NumTree T,int n)
    {
    	if(T==NULL)
    	{
    		T=(NumTree)malloc(sizeof(struct num));	
    		if(T==NULL)
    		{
    			printf("申请内存失败
    ");
    		}
    		else
    		{
    			T->n=n; 
    			T->Ltree=T->Rtree=NULL;
    		}
    	}
    	else if(n<T->n)
    	{
    		T->Ltree=insertElement(T->Ltree,n);
    	}
    	else if(n>T->n)
    	{
    		T->Rtree=insertElement(T->Rtree,n);
    	}
    	return T;
    }
    
    /*
    	寻找节点 
    */
    NumTree findElement(NumTree T,int n)
    {
    	if(n<T->n)
    	{
    		return findElement(T->Ltree,n);		
    	}
    	else if(n>T->n)
    	{
    		return findElement(T->Rtree,n);
    	}
    	else
    	{
    		return T;
    	}
    }
    
    /*
    	找到最小项 
    */
    NumTree findMin(NumTree T)
    {
    	NumTree p=T->Ltree;
    	while(p!=NULL)
    	{
    		p=p->Ltree;
    	}	
    	return p;
    }
    /*
    	删除节点 
    */
    NumTree deleteElement(NumTree T,int n)
    {
    	NumTree t;
    	if(n<T->n)
    	{
    		T->Ltree=deleteElement(T->Ltree,n);
    	} 
    	else if(n>T->n)
    	{
    		T->Rtree=deleteElement(T->Rtree,n);
    	}
    	else if((T->Ltree!=NULL)&&(T->Rtree)!=NULL)
    	{
    		t=findMin(T->Rtree);
    		T->n=t->n;
    		T->Rtree=deleteElement(T->Ltree,T->n);
    	}
    	else
    	{
    		t=T;
    		if(T->Ltree==NULL)
    		{
    			T=T->Rtree;	
    		}
    		else if(T->Rtree==NULL)
    		{
    			T=T->Ltree;		
    		}
    		free(t);
    	}
    	return T;
    }
    
    /*
    	打印树 
    */
    void printfTree(NumTree T)
    {
    	if(T!=NULL)
    	{
    		printf("%d
    ",T->n);
    		printfTree(T->Ltree);
    		printfTree(T->Rtree);
    	}	
    }
    
    int main()
    {
    	NumTree T0;
    	T0=createNewTree(100);
    	insertElement(T0,80);	
    	insertElement(T0,120);	
    	insertElement(T0,90);	
    	insertElement(T0,110);
    	printfTree(T0);
    	deleteElement(T0,80);
    	printfTree(T0);
    }
    

      

  • 相关阅读:
    一个木桶的容积取决于最短的那块木板——木桶定律
    碰到系统故障了该怎么处理?
    我心中的程序员技术飞升之路
    编程名言(有些趣味性)
    haproxy部署配置
    安装mongodb插件
    安装redis扩展
    安装memcached扩展
    编译安装PHP7
    负载均衡
  • 原文地址:https://www.cnblogs.com/achao123456/p/6349428.html
Copyright © 2011-2022 走看看