链式二叉树的遍历

  • 如果使用动态创建二叉树需要使用递归,故使用静态的方式创建二叉树
  • 代码如下:

   //链式二叉树
   ///使用静态创建二叉树 
   #include<stdio.h>
   #include<malloc.h>
   //定义 二叉树的数据结构
  typedef struct binaryTree{
   		char value;//存储的值
   		struct binaryTree *leftChild;//左孩子
		struct binaryTree *rightChild;//右孩子    
		    
   } BINARYTREE,*PBINARYTREE;  
   
   
   //静态方法初始化二叉树
   void creatBinaryTree(PBINARYTREE pRoot ){
   	//先将该树所有的结点都创建出来
	       	PBINARYTREE pB = (PBINARYTREE)malloc(sizeof(BINARYTREE));
	       	PBINARYTREE pC = (PBINARYTREE)malloc(sizeof(BINARYTREE));
            PBINARYTREE pD = (PBINARYTREE)malloc(sizeof(BINARYTREE));
             PBINARYTREE pE = (PBINARYTREE)malloc(sizeof(BINARYTREE));
	        //开始进行结点连接 
           pRoot->value='A';
           pRoot->leftChild=pB;
           pRoot->rightChild=pC;
           pB->value='B';
           pB->leftChild=NULL;
           pB->rightChild=NULL;
           pC->value='C';
           pC->leftChild=pD;
           pC->rightChild=NULL;
           pD->value='D';
           pD->leftChild=NULL;
		   pD->rightChild=pE;
		   pE->value='E';
		   pE->leftChild=NULL;
		   pE->rightChild=NULL;
   		
   } 
   //二叉树的先序遍历 
   void preShow(PBINARYTREE pRoot){
   		/*
   		1.先遍历根节点
		2.然后先序遍历左子树
		3.再然后先序遍历右子树   
		注意:必须要满足该节点非空才能遍历 
   		*/
   	if(pRoot!=NULL){
   			printf("%c\n",pRoot->value);
   			
		   }
	if(NULL!=pRoot->leftChild){
			preShow(pRoot->leftChild);
		}   
		
		if(NULL!=pRoot->rightChild){
			preShow(pRoot->rightChild);
		} 
   	
   		
   }
   
  
   //中序遍历
   void inShow(PBINARYTREE pRoot)
   {
   		//中序遍历左子树
   		if(pRoot->leftChild!=NULL){
   				  inShow(pRoot->leftChild)  ;
		   }
		   //遍历根节点
		   if(pRoot!=NULL){
		   		printf("%c\n",pRoot->value);

		   }
		   
		   // 中序遍历右子树
		   if(pRoot->rightChild!=NULL){
		   		inShow(pRoot->rightChild);	
		   } 
	
	} 
   
    //后序遍历
	void postShow(PBINARYTREE pRoot)
	{
		//后续遍历左子树
		if(pRoot->leftChild!=NULL)
		{
			postShow(pRoot->leftChild);
		 } 
		 //后续遍历右子树
		 if(pRoot->rightChild){
		 	postShow(pRoot->rightChild);
		 } 
		 //遍历根节点
		 printf("%c\n",pRoot->value); 
	 } 
   int main()
   {
   	//创建根节点 
   	PBINARYTREE root = (PBINARYTREE)malloc(sizeof(BINARYTREE));
   	//创建二叉树
	  creatBinaryTree(root);
	   //先序遍历二叉树
	    preShow(root);
	    //中序遍历二叉树
		inShow(root); 
		//后序遍历二叉树
	postShow(root); 
	    
	printf("hello");
   	
   	return 0;
	} 


posted @ 2023-09-26 20:11  一往而深,  阅读(6)  评论(0编辑  收藏  举报