陣列實現根據二叉樹的先序遍歷和中序遍歷構造二叉樹

2021-07-15 02:25:03 字數 768 閱讀 8323

根據二叉樹的先序遍歷和中序遍歷構造二叉樹是非常經典的一道演算法題目,但是在網上找到的資料絕大多數都是使用鏈結方式構造二叉樹,感覺這樣比較繁瑣,因此自己寫了乙個陣列實現的程式,當然,程式不算很完善,還望朋友們多指教。

構造思路:在先序序列中的第乙個字元一點是樹的根節點,然後在中序序列中找到這個根的位置,它的前面的全部字元構成左子樹的中序序列,後面的全部字元構成右子樹的中序序列,而先序序列中根後面緊跟著的相同長度字串為左子樹的先序序列,同理找到右子樹的先序序列,然後進行函式的遞迴呼叫,構造出所有子樹。

//測試樣例:

//abcdefg

//cbedafg

#include #include #include using namespace std;

char tree[1000];

char leftpre[1000];

char leftin[1000];

char rightpre[1000];

char rightin[1000];

void build(char *preorder,char *inorder,int length,int index)

{ if(length==0)return ;

tree[index] = preorder[0];

/* cout<<"index :"<>pre)

{cin>>in;

int len = strlen(in);

build(pre,in,len,1);

for(int i=0;i

根據二叉樹的先序遍歷和中序遍歷建立二叉樹

根據二叉樹的先序遍歷和中序遍歷建立二叉樹 rebacktree 根據二叉樹的先序遍歷和中序遍歷建立二叉樹。rebacktree1 根據二叉樹的後序序遍歷和中序遍歷建立二叉樹。include stdio.h include stdlib.h typedef struct node node,nodep...

根據二叉樹的先序遍歷和中序遍歷重建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。public class solution int in treenode root reconstructbinarytree p...

根據先序遍歷和中序遍歷建立二叉樹

先序遍歷的順序是根左右,中序遍歷的順序是左根右。根據這一特性,先序遍歷的第乙個元素肯定是根節點。所以我們只要在中序遍歷中找到該根節點的值,根節點以左就是它的左子樹,根節點以右就是它的右子樹,然後就可以遞迴的方式建立二叉樹 假設現在有一顆二叉樹如下 先序序列為 18,14,7,3,11,22,35,2...