導航:首頁 > 編程語言 > 二叉樹編程題

二叉樹編程題

發布時間:2024-12-20 17:40:31

⑴ 跪求編程大神~用c語言編個程序

下面是我做過的題目,演算法思想樹上已經說的很詳細了,我就給代碼哈。


題目描述
輸入二叉樹的先序遍歷序列和中序遍歷序列,輸出該二叉樹的後序遍歷序列。
輸入
第一行輸入二叉樹的先序遍歷序列;
第二行輸入二叉樹的中序遍歷序列。
輸出
輸出該二叉樹的後序遍歷序列。
示例輸入
ABDCEF
BDAECF
示例輸出
DBEFCA

#include<iostream>
#include<cstring>
#defineMAX50+3
usingnamespacestd;
typedefcharElem_Type;
typedefstructBiTree
{
Elem_Typedata;//數據
structBiTree*Lchild;//左孩子
structBiTree*Rchild;//右孩子
}BiTree;//要查找的元素查找的地方數組的長度
intSearch_Num(Elem_Typenum,Elem_Type*array,intlen)
{
for(inti=0;i<len;i++)
if(array[i]==num)
returni;
//return-1;//沒有找到
}//前序遍歷中序遍歷中序數組長度
BiTree*Resume_BiTree(Elem_Type*front,Elem_Type*center,intlen)
{
if(len<=0)
returnNULL;
BiTree*temp=newBiTree;
temp->data=*front;
intindex=Search_Num(*front,center,len);
temp->Lchild=Resume_BiTree(front+1,center,index);
temp->Rchild=Resume_BiTree(front+index+1,center+index+1,len-index-1);
returntemp;
}
voidPostOrderTraverse(BiTree*root)//後序遍歷
{
if(root!=NULL)
{
PostOrderTraverse(root->Lchild);
PostOrderTraverse(root->Rchild);
cout<<root->data;
}
}
intmain(void)
{
Elem_Type*preorder=newElem_Type[MAX];//前序
Elem_Type*inorder=newElem_Type[MAX];//中序
cin>>preorder;cin>>inorder;
BiTree*root=Resume_BiTree(preorder,inorder,strlen(inorder));
PostOrderTraverse(root);
cout<<endl;
return0;
}
/**************************************
Problemid:
Username:
Result:Accepted
TakeMemory:444K
TakeTime:0MS
SubmitTime:2014-05-1622:52:07
**************************************/

⑵ 解決編程問題(1)

由兩種遍歷所得的順序能唯一確定一棵二叉樹,比如給定了一顆二叉樹的先序序列是:ABDECFG,中序序列是:DBEAFCG,由先序序列可以確定該二叉樹根為A,因為先序遍歷的順序是從根到左子樹再到右子樹,然後從中序序列中,可以得知DBE在A的左子樹,而FCG在A的右子樹,由於在先序序列中B緊跟在A後,所以B肯定是A左子樹的樹根,再看中序序列里,A的左子樹是DBE,由中序序列遍歷的順序為:左子樹,雙親,右子樹,可知D為B的左子樹,E為B的右子樹,同樣可以分析樹根A的右子樹,先序序列中ABDE已經將樹根和左子樹遍歷完成,所以剩下的CFG是右子樹的先序遍歷序列,可知C為右子樹的樹根,F為C的左子樹,G為C的右子樹,所以該二叉樹按層序遍歷的順序應該是ABCDEFG先根遍歷就是先訪問根節點 再依次訪問左右子樹中根遍歷就是先訪問左子樹 再依次訪問根節點和右子樹後根遍歷就是先訪問左右子樹 在訪問根節點

⑶ 快快編程第43題加分二叉樹怎麼做

dp:

由於它是中序遍歷,所以結果二叉樹的任意一棵子樹都是中序遍歷中的一段區間

設d[i][j]表示i到j的區間所組成的二叉樹的最高加分

若子樹的樹根為k(i<=k<=j),則左子樹為區間i~k-1右子樹為k+1~j

加分為d[i][k-1]*d[k+1][j]+a[k]

所以狀態轉移方程為d[i][j]=max(d[i][k-1]*d[k+1][j]+a[k] | i<=k<=j)

閱讀全文

與二叉樹編程題相關的資料

熱點內容
找不到網頁上原代碼加密視頻 瀏覽:132
禹鼎遙控器編程線怎麼接線 瀏覽:82
java窗體編程 瀏覽:278
knn演算法如何減少計算次數 瀏覽:246
阿里雲伺服器地區價格 瀏覽:138
輕觸app顯示卸載功能怎麼關閉 瀏覽:474
程序員校招面試 瀏覽:381
u啟動盤開源碼 瀏覽:824
電腦不能解壓rar嗎 瀏覽:100
下面關於ssh命令正確的是 瀏覽:18
我的世界命令方塊怎麼得視頻 瀏覽:486
金蝶伺服器ip地址變更怎麼重新連接 瀏覽:256
安卓vr有什麼好的游戲 瀏覽:606
stc單片機高電平檢測 瀏覽:708
如何學單片機 瀏覽:765
圖片像素壓縮軟體 瀏覽:573
面試自我介紹程序員 瀏覽:296
為什麼叫單片機 瀏覽:600
如何為伺服器增加第三個ip 瀏覽:713
閱讀pdf的平板 瀏覽:885