【1138】Postorder Traversal (25 分)

简介: 【1138】Postorder Traversal (25 分)【1138】Postorder Traversal (25 分)
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<algorithm>  
#include<map>
#include<vector>
#include<queue> 
using namespace std;  
//后序遍历,找到第一个元素就退出
//此题不要前序中序建立树再遍历树(可能超时)
const int maxn=50010;
int n,m,p,t,pre[maxn],in[maxn];
bool flag=false; 
void getpost(int preL,int preR,int inL,int inR){
  if(preL>preR || flag==true)  return ;
    //flag==true去掉虽然能ac,可能超时
  int k;
  for(k=inL;k<=inR;k++){
    if(in[k] == pre[preL]) {  //在中序序列中找到相等的结点
      break;
    }
  }
  int numLeft=k-inL; //左子树的结点个数
  getpost(preL+1,preL+numLeft,inL,k-1);
  getpost(preL+numLeft+1,preR,k+1,inR);
  if(flag == false){
    flag=true;
    printf("%d",pre[preL]);
  }
}
int main(){   
  int n;
  scanf("%d",&n);
  for(int i=0;i<n;i++)  scanf("%d",&pre[i]);
  for(int i=0;i<n;i++)  scanf("%d",&in[i]);
  getpost(0,n-1,0,n-1);  
  system("pause"); 
    return 0;   
}
相关文章
LeetCode: 106_Construct Binary Tree from Inorder and Postorder Traversal | 根据中序和后序遍历构建二叉树 | Medium
要求:根据中序和后序遍历序列构建一棵二叉树 代码如下: 1 struct TreeNode { 2 int val; 3 TreeNode *left; 4 TreeNode *right; 5 TreeNo...
922 0
LeetCode:105_Construct Binary Tree from Preorder and Inorder Traversal | 根据前序和中序遍历构建二叉树 | Medium
要求:通过二叉树的前序和中序遍历序列构建一颗二叉树 代码如下: 1 struct TreeNode { 2 int val; 3 TreeNode *left; 4 TreeNode *right; 5 Tr...
1035 0
1138. Postorder Traversal (25)
#include #include #include using namespace std; int n; vector pre, in, post; struct node{ int data; nod...
743 0
|
算法 Java Python
LeetCode 94:二叉树的中序遍历 Binary Tree Inorder Traversal
题目: 给定一个二叉树,返回它的中序 遍历。 Given a binary tree, return the inorder traversal of its nodes' values. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出:...
981 0

热门文章

最新文章