关于数据结构中二叉树的遍历

                 最近去笔试必考的题目,很简单,可惜我都给忘了- -。痛下决心好好研究一下。

               一般是给与二叉树的两种遍历方式,求第三种。

               先说下步骤:

               首先,先要把树构造出来(废话),构造树就要先把树的根节点构造出来,左边就是左子树,右边就是右子树,再以左(右)孩子为根节点不停递归。。。然后就按遍历方式遍历就出结果了。

                 先上代码:已知前序中序求后序

#include<stdio.h>
#include<stdlib.h>
#include<fstream.h>
struct TreeNode
{
    struct TreeNode* left;
    struct TreeNode* right;
    char  elem;
};

 void BinaryTreeTraversal(char* front, char* middle, int length)
 {
	 if(length==0){
	
		 return;
	 }
	  TreeNode * temp=(struct TreeNode*)malloc(sizeof(struct TreeNode*));
	  temp->elem=*front;
	 
	  for(int index=0;index<length;index++){
		  if(middle[index]==*front){
			  break;//找当前根节点
		  }
	  }
	  BinaryTreeTraversal(front+1,middle,index);//遍历左子树
	  BinaryTreeTraversal(front+index+1,middle+index+1,length-(index+1));//遍历右子树
	  cout<<temp->elem<<endl;
} 
 
 void main(int argc, char* argv[])
 {
     
     char* front="LDAFEMHZ";
     char* middle="ADEFLHMZ";
   
     BinaryTreeTraversal(front, middle, 8);
     system("pause");
    
}

已知后序中序,求前序。

例:

#include <stdlib.h>
#include<stdio.h>
#include<fstream.h>
struct TreeNode{
	char data;
	struct TreeNode* left;
	struct TreeNode* right;
};
void FrontBinaryTree(char* middle,char* after,int length){
	TreeNode* temp=(TreeNode*)malloc(sizeof(TreeNode*));
   temp->data=*(after+length-1);
  if(length==0){
	  return;
  }
  cout<<temp->data<<endl;
  for(int index=0;index<length;index++){
	  if(middle[index]==*(after+length-1))
	  {
		  break;
	  }
  }
  FrontBinaryTree(middle,after,index);
  FrontBinaryTree(middle+index+1,after+index,length-(index+1));

    
}
void main(){
	char* a="ASDFG";
	char* b="ASFGD";
	FrontBinaryTree(a,b,5);
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值