本文主要是介绍二叉树,由先序序列和中序序列建树 / 满(真)二叉树由先序序列和后序序列建树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
中序序列可以与先序,后序,层序序列中的任何一个建立一棵树,而后三者之间两两不能建树(因为无法区分根节点的左右子树)
按先序遍历的顺序来建立树,建树过程类似于斐波那契数列的求项过程
先建立第一层的根节点,接着就按步骤的顺序来建立节点,如下图
上代码
#include <iostream>using namespace std;struct node
{int x;node* lson;node* rson;
};int pre[1000],in[1000];///二叉树的先序区间(prel,prer),中序区间(inl ,inr)
///通过先序区间找出根节点,可将中序区间分为左右子树,然后将左右子树看成单独的树
node* recreat(int prel,int prer,int inl, int inr)
{if(prel>prer) return NULL;///若先序区间长度<=0,则返回空,即没有子树node *root=new node;///建立根节点,并为其开辟空间root->x=pre[prel];///给根节点赋值int k;for(k=inl;k<inr;k++)///中序区间中找出根节点,这样就可以将先序序列分为左右子树{if(in[k]==pre
这篇关于二叉树,由先序序列和中序序列建树 / 满(真)二叉树由先序序列和后序序列建树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!