五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【PAT A1020】 Tree Traversals

2023-03-01 19:44 作者:倉(cāng)鼠翞  | 我要投稿

//給定二叉樹(shù)的先序序列和中序序列,求二叉樹(shù)的層序遍歷序列
//輸入;
//7
//1 2 3 4 6 7 5
//2 1 6 4 7 3 5
//1 2 3 4 5 6 7
//輸出
#include<cstdio>
#include<queue>
using namespace std;
int n;//二叉樹(shù)的節(jié)點(diǎn)數(shù)
int x[10];//存放先序序列
int z[10];//存放中序序列
struct TreeNode
{
? ?int data;//節(jié)點(diǎn)信息
? ?TreeNode * leftchild;
? ?TreeNode * rightchild;
};
TreeNode* creat(int preL,int preR,int inL , int inR)//preL為先序做區(qū)間因由此類(lèi)推
{
? ?if(preL>preR)
? ?{
? ? ? ?return NULL;
? ?}
? ?TreeNode * root = new TreeNode;
? ?root -> data = x[preL];//先序的第一個(gè)元素就是根
? ?int k;//查找和先序第一個(gè)元素相同的元素于后序序列中下標(biāo)用k保存
? ?for(int i=inL;i<=inR;i++)
? ?{
? ? ? ?if(z[i] == x[preL])
? ? ? ?{
? ? ? ? ? ?k=i;
? ? ? ? ? ?break;//找到則退出循環(huán)
? ? ? ?}
? ?}
? ?int numleft = k -inL;//左子樹(shù)的節(jié)點(diǎn)個(gè)數(shù)
? ?//左子樹(shù)的先序區(qū)間為{preL+1,preL+numleft},中序區(qū)間為{inL,k-1}遞歸調(diào)用返回作為左子樹(shù)
? ?root -> leftchild = creat(preL+1,preL+numleft,inL,k-1);
? ?//右子樹(shù)的先序區(qū)間為{preL+numleft+1,preR},中序區(qū)間為{k+1,inR}
? ?root -> rightchild = creat(preL+numleft+1,preR,k+1,inR);
? ?//返回根節(jié)點(diǎn)的位置
? ?return root;
}
void levelTraverse(TreeNode * root)
{
? ?queue<TreeNode *> myqueue;
? ?myqueue.push(root);
? ?while(myqueue.empty() == false)//隊(duì)列為空是假的即隊(duì)列不空
? ?{
? ? ? ?TreeNode * Queuefront = myqueue.front();
? ? ? ?myqueue.pop();
? ? ? ?printf("%d ",Queuefront->data);
? ? ? ?if(Queuefront -> leftchild != NULL)
? ? ? ?{
? ? ? ? ? ?myqueue.push(Queuefront -> leftchild);
? ? ? ?}
? ? ? ?if(Queuefront -> rightchild != NULL)
? ? ? ?{
? ? ? ? ? ?myqueue.push(Queuefront -> rightchild);
? ? ? ?}
? ?}

}

int main()
{
? ?scanf("%d",&n);
? ?for(int i=1;i<=n;i++)
? ?{
? ? ? ?scanf("%d ",&x[i]);
? ?}
? ?for(int i=1;i<=n;i++)
? ?{
? ? ? ?scanf("%d ",&z[i]);
? ?}
? ?//用最終的根接受返回的根節(jié)點(diǎn)
? ?TreeNode * root = creat(1,n,1,n);
? ?//二叉樹(shù)的層序遍歷
? ?levelTraverse(root);
}

【PAT A1020】 Tree Traversals的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
永仁县| 凤凰县| 辽阳市| 广西| 宁蒗| 东乡族自治县| 衡山县| 准格尔旗| 金山区| 如东县| 通河县| 滦平县| 吉木萨尔县| 睢宁县| 宣武区| 边坝县| 宁远县| 乐清市| 衡水市| 兴海县| 兴宁市| 溧水县| 通渭县| 兴山县| 东台市| 社会| 平南县| 当阳市| 大姚县| 石柱| 南涧| 枣阳市| 东乌| 定南县| 皮山县| 乌拉特前旗| 万山特区| 武威市| 镇江市| 灵川县| 中西区|