zoukankan      html  css  js  c++  java
  • c语言-构建一个静态二叉树

    第一、树的构建

    定义树结构

    struct BTNode {
    	char data;
    	struct BTNode* pLChild;
    	struct BTNode* pRChild;
    };
    

    静态方式创建一个简单的二叉树

    struct BTNode* create_list() {
    
    	struct  BTNode* pA = (struct BTNode*)malloc(sizeof(BTNode));
    	struct  BTNode* pB = (struct BTNode*)malloc(sizeof(BTNode));
    	struct  BTNode* pC = (struct BTNode*)malloc(sizeof(BTNode));
    	struct  BTNode* pD = (struct BTNode*)malloc(sizeof(BTNode));
    	struct  BTNode* pE = (struct BTNode*)malloc(sizeof(BTNode));
    	
    	pA->data = 'A';
    	pB->data = 'B';
    	pC->data = 'C';
    	pD->data = 'D';
    	pE->data = 'E';	
    
    	pA->pLChild = pB;
    	pA->pRChild = pC;
    	pB->pLChild = pB->pRChild = NULL;
    
    	pC->pLChild = pD;
    	pC->pRChild = NULL;
    
    	pD->pLChild = NULL;
    	pD->pRChild = pE;
    
    	pE->pLChild = pE->pRChild = NULL;
    
    	return pA;
    }
    

      

    第二、树的三种遍历

    1. 先序遍历

    //先序输出
    void PreTravense(struct BTNode* pHead) {
    	if (NULL!= pHead)
    	{
    		printf("%c", pHead->data);
    		if (NULL!= pHead->pLChild)
    		{
    			PreTravense(pHead->pLChild);
    		}
    		if (NULL != pHead->pRChild)
    		{
    			PreTravense(pHead->pRChild);
    		}
    	}
    }
    

      

    2. 中序遍历

    //中序输出
    void InTravense(struct BTNode* pHead) {
    	if (NULL != pHead)
    	{
    		if (NULL != pHead->pLChild)
    		{
    			PreTravense(pHead->pLChild);
    		}
    		printf("%c", pHead->data);
    		
    		if (NULL != pHead->pRChild)
    		{
    			PreTravense(pHead->pRChild);
    		}
    	}
    }
    

      

    3.后续遍历

    //后序输出
    void PostTravense(struct BTNode* pHead) {
    	if (NULL != pHead)
    	{
    		if (NULL != pHead->pLChild)
    		{
    			PreTravense(pHead->pLChild);
    		}		
    
    		if (NULL != pHead->pRChild)
    		{
    			PreTravense(pHead->pRChild);
    		}
    		printf("%c", pHead->data);
    	}
    }
    

    第三、最终运行测试

    int main() {
    	printf("创建序列
    ");
    	struct BTNode* pHead = create_list();
    
    	printf("先序输出
    ");
    	PreTravense(pHead);
    	printf("中序输出
    ");
    	InTravense(pHead);
    	printf("后序输出
    ");
    	PostTravense(pHead);
    	return 0;
    }
    

      

  • 相关阅读:
    Js中的变量
    flash读取XML 背景自动适应大小
    Ajax.NET Professional
    JS事件大全
    (转)SharePoint社区工具包中文版发布!!
    .iOS APP Project or Mac APP Project编译错误提示: My Mac 64bit is not valid for Running the scheme
    NSAssert断言
    iphone手机appstore地区更改
    自定义UITableView Section 的title样式字体
    从项中复制值
  • 原文地址:https://www.cnblogs.com/clc2008/p/6838789.html
Copyright © 2011-2022 走看看