zoukankan      html  css  js  c++  java
  • 二叉树的存储与遍历

    typedef char status;
    typedef char Telemtype;
    #define NULL 0
    #define OK   1
    typedef struct bitnode{
    	Telemtype data;
    	struct bitnode *lchild,*rchild;
    }bitnode,*bitree;
    Creatbitree(bitree &t)
    {
    //先序创建二叉树
    	char ch;
    	scanf("%c",&ch);
    	if(ch=='*') t=NULL;
    	else{
    		t=(bitnode *)malloc(sizeof(bitnode));
    		if(!t) exit(0);
    		t->data=ch;
    		Creatbitree(t->lchild);
    		Creatbitree(t->rchild);
    	}
    	return OK;
    }
    
    
    status Leafcount(bitree t)
    {
    //统计二叉树中叶子结点的个数
    	if(!t)
    		return 0;
    	else if(t->lchild==0&&t->rchild==0)
    		     return 1;
    	     else 
    			 return Leafcount(t->lchild)+Leafcount(t->rchild);
    }
    
    status Depth(bitree t)
    {
    	
    //计算该二叉树的深度
    	int dl,dr,d;
    	if(!t) return 0;
    	else 
    	{
    		///////////#TODO7
    		   dl=Depth(t->lchild);
    		   dr=Depth(t->rchild);
    		   if(dl>=dr)  return d=1+dl;
    		   if(dl<dr)   return d=1+dr;
    	}
    }
    
    status Nodecount(bitree t)
    {
    //统计二叉树的总的结点数	
    	int n,nl,nr;
    	if(!t) return 0;
    	else
    	{
    		///////////#TODO8
    		nl=Nodecount(t->lchild);
    		nr=Nodecount(t->rchild);
    		n=1+nl+nr;
    	}
    	return n;
    }
    
    void Preordertree(bitree t)
    {
    	//先序序列遍历二叉树
    	if(t)
    	{
    		printf("%c",t->data);
    		Preordertree(t->lchild);
    		Preordertree(t->rchild);
    	}
    }
    
    void Inordertree(bitree t)
    {
    	//中序序列遍历二叉树
    	if(t)
    	{
    		Inordertree(t->lchild);
    		printf("%c",t->data);
    		Inordertree(t->rchild);
    	}
    }
    
    void Pasttree(bitree t)
    {
       //后序序列遍历二叉树
    	if(t){
    	Pasttree(t->lchild);
    	Pasttree(t->rchild);
    	printf("%c",t->data);
    	}
    }
    编译执行结果例如以下:
    <img src="http://img.blog.csdn.net/20140530230219765" alt="" />
    

  • 相关阅读:
    07-图5 Saving James Bond
    07-图4 哈利·波特的考试(25 分)多源最短路,邻接矩阵
    最短路径问题
    最小生成树
    06-图3 六度空间(30 分)
    06-图2 Saving James Bond
    06-图1 列出连通集(25 分)邻接矩阵

    05-树9 Huffman Codes(30 分)
    集合及运算
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5279005.html
Copyright © 2011-2022 走看看