当前位置:主页 > 查看内容

还原二叉树(PTA)

发布时间:2021-05-23 00:00| 位朋友查看

简介:还原二叉树 题目 答案 注意 最后 题目 答案 # include iostream # include malloc.h using namespace std ; char pre [ 50 ] , mid [ 50 ] ; typedef struct Tree * tree ; struct Tree { char data ; tree left , right ; } ; tree build_tree ( int root ,……

还原二叉树

题目

在这里插入图片描述

答案

#include<iostream>
#include<malloc.h>
using namespace std;
char pre[50],mid[50];
typedef struct Tree* tree;
struct Tree{
	char data;
	tree left,right;
};
tree build_tree(int root,int start,int end)
{
	if(start>end) return NULL;
	int i;
	
	for(i=start;i<=end;i++)
	if(mid[i]==pre[root]) break;
	
	tree tmp;
	tmp=(tree)malloc(sizeof(struct Tree));
	tmp->data=pre[root];
	tmp->left=build_tree(root+1,start,i-1);
	tmp->right=build_tree(root+1+i-start,i+1,end);	
	return tmp;
}
int get_height(tree tmp)
{
	if(!tmp) return 0;
	else
	{
		int l=get_height(tmp->left)+1;
		int r=get_height(tmp->right)+1;
		return l>r?l:r; 
	}
}
int main()
{
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
	cin>>pre[i];
	for(int i=0;i<n;i++)
	cin>>mid[i];
	cout<<get_height(build_tree(0,0,n-1));
}

注意

  1. 在函数中创建的tmp结构体变量要记得动态分配内存(即malloc)
  2. buildTree函数最后记得返回tmp

最后

这道的思路和给出后序和中序求前序的题目思路是一致的,详情可参考下面这篇文章

根据后序和中序遍历输出先序遍历

;原文链接:https://blog.csdn.net/ljhsq/article/details/115532297
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐