NYOJ 756 重建二叉树【由二叉树的后序和中序建立二叉树并得先序】
2014-06-06 19:28
344 查看
思想的话就是那样:二叉树建立(由先序(或后序)和中序)
题目链接:点击打开链接
题意就是很裸的给你二叉树的后序很中序,求出先序。
我的做法还是先把二叉树建立起来然后再输出先序就可以了。
代码:
题目链接:点击打开链接
题意就是很裸的给你二叉树的后序很中序,求出先序。
我的做法还是先把二叉树建立起来然后再输出先序就可以了。
代码:
#include <iostream> #include <string.h> #include <stdio.h> using namespace std; const int N=100; struct Node { char date; Node *left,*right; Node (){ left=NULL; right=NULL; } }; void BuildBinaryTree(Node *& root,char *postorder,char *midorder,int len) { if(len==0) { root = NULL;//也就是左右子树为空的话,那么其的孩子节点为空.. return ; } root = new Node();//否则的话为该节点的孩子分配空间并初始化. root->date=postorder[len-1]; char *rootplace=strchr(midorder,root->date);//分为左右子树. int leftlen=strlen(midorder)-strlen(rootplace); int rightlen=len-leftlen-1; BuildBinaryTree(root->left,postorder,midorder,leftlen); BuildBinaryTree(root->right,postorder+leftlen,rootplace+1,rightlen); } void PreOrder(Node *root){ if(root == NULL) return ; printf("%c",root->date); PreOrder(root->left); PreOrder(root->right); } int main(){ char postorder ,midorder ; while(cin >> postorder >> midorder){ Node *root=NULL; BuildBinaryTree(root,postorder,midorder,strlen(postorder)); PreOrder(root); cout << endl; } return 0; }
相关文章推荐
- NYOJ 756 重建二叉树
- nyoj 756 重建二叉树
- NYOJ 756 重建二叉树
- NYOJ-756重建二叉树
- nyoj221 nyoj756 重建二叉树
- nyoj756重建二叉树
- NYOJ-756重建二叉树
- nyoj756 重建二叉树
- nyoj-756 重建二叉树
- nyoj 756 重建二叉树(总结)
- NYOJ 题目756 重建二叉树
- 重建二叉树NYOJ221题 && NYOJ756题
- nyoj重建二叉树(不真的建立)
- NYOJ756 重建二叉树
- nyoj-756-重建二叉树
- 根据后序和中序建立二叉树
- C++二叉树的建立、前序、中序、后序遍历
- python实现二叉树的建立以及遍历(递归前序、中序、后序遍历,队栈前序、中序、后序、层次遍历)
- 剑指Offer-- 重建二叉树 前序中序建立二叉树
- 根据二叉树前序遍历和中序遍历的结果,重建出该二叉树并后序遍历之 java代码