重建樹結構

2021-09-20 13:59:42 字數 1260 閱讀 2377

重建二叉樹結構,給定了前序和中序,重建樹形結構

#include #include 

using

namespace

std;

/*給定前序,中序,重建樹結構

例如假定:

前序:adbcef

中序:dbaecf

後序:dbefca

*/struct

node;

//遞迴構建樹

node* rebuild(char *ppreorderstart,char* ppreorderend,char* pinorderstart,char *pinorderend)

char* rootinorder =pinorderstart;

while(rootinorder != pinorderend && *rootinorder != root->chvalue)rootinorder++;

if(rootinorder == pinorderend && root->chvalue != root->chvalue)return

null;

int leftlen = rootinorder -pinorderstart;

char* leftpreorderend = ppreorderstart+leftlen;

if (leftlen > 0

)

if (leftlen < ppreorderend -ppreorderstart)

return

root;}//

重建樹void rebuildtree(char *ppreorder,char *pinorder,int ntreelen,node**proot)

//先根遍歷

void prerootview(node*root)

if (root->pright !=null )

}//中根遍歷

void inrootview(node*root)

cout

if (root->pright !=null )

}//後根遍歷

void afrootview(node*root)

if (root->pright !=null )

cout

}int main(int argc, char **ar**)

執行結果:

字串陣列構建樹結構

源資料 let srclist 動物 昆蟲 螞蟻 動物 昆蟲 植物 草 綠色 植物 花 紅色 植物 花 黃色 去重分類 構建樹形資料如下 避免多根將每一條分類資訊路徑,視為容器陣列內的元素 使用固定指標記錄目標根位置,游標指標匹配節點,移動 新增節點之前判斷是否有同名節點存在,存在則進入其下層子節點...

繪製樹結構

樹的表示方法有雙親表示法 孩子表示法 雙親孩子表示法 孩子兄弟表示法,具體請參考其中前三種基於陣列,最後一種基於鍊錶。我定義的數節點資料結構為 typedef struct treenode treenode,ptreenode 也就是孩子兄弟表示法,附加乙個指向父節點的指標。參考上圖,發現第乙個子...

樹結構備份

為每個樹枝建立葉子結點 private void createbranch stringbuffer treemap,int parentid,list alist 在錄入結點資料時可以提前錄入結點下是否有子結點的資訊,這樣如果該結點下面沒有子結點,就不用再去遞迴,可以提公升效率 if map.ge...