日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

博客作业04--树

發(fā)布時(shí)間:2023/11/27 生活经验 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 博客作业04--树 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一.學(xué)習(xí)總結(jié)(2分)

1.1樹結(jié)構(gòu)思維導(dǎo)圖

1.2 樹結(jié)構(gòu)學(xué)習(xí)體會(huì)

樹的前中后序遞歸操作的訪問路徑都如下圖

樹的層次遍歷的路徑則如下圖

操作{
進(jìn)隊(duì)第一個(gè)節(jié)點(diǎn),
while(隊(duì)不空)
{
訪問該節(jié)點(diǎn),
if(BT->lchild!=NULL)進(jìn)隊(duì)。
if(BT->rchild!=NULL)進(jìn)隊(duì)。
}
}
三序遍歷的非遞歸(先序?yàn)槔?#xff09;:
操作:{
進(jìn)棧樹的根節(jié)點(diǎn);
while(棧不空){
訪問之
if(BT->rchild!=NULL)進(jìn)棧。
if(BT->lchild!=NULL)進(jìn)棧。
}
}
前序中序建樹過程:
前:ABCEFD
中:BCEFAD
前序的第一個(gè)A:說明它是根節(jié)點(diǎn)
左前樹: BCEF 左中:BCEF
右前樹: D 右中:D
重復(fù)找左右樹。
結(jié)果如下圖

哈夫曼樹
如1357建樹:

細(xì)心觀察會(huì)發(fā)現(xiàn)其wpl與非葉子節(jié)點(diǎn)的和是相等的
數(shù)學(xué)證明:設(shè) a b c d e 幾個(gè)節(jié)點(diǎn)建立哈夫曼樹(假設(shè)每一個(gè)節(jié)點(diǎn)都比后加進(jìn)來的節(jié)點(diǎn)大)
a+b為第一個(gè)非根節(jié)點(diǎn) 則a+b+c為第二個(gè)依次類推
會(huì)發(fā)現(xiàn)非葉子節(jié)點(diǎn)的和是e+2d+3c+4b+4a
而wpl也恰好是這個(gè)值
并非偶然這可以從哈夫曼樹的結(jié)構(gòu)來考慮因?yàn)槊窟f加一層已經(jīng)建立過的節(jié)點(diǎn)就加1比方說哈夫曼樹有三層那么最下面一層的和會(huì)在第二層次中被加也會(huì)在第一層被加也就是被
了兩次與wpl構(gòu)造數(shù)的算法完全一致。于是可運(yùn)用貪心算法快速得到wpl。
樹是一種非線性結(jié)構(gòu)
樹形結(jié)構(gòu)不但本身很有用,還反映了許多計(jì)算過程的抽象結(jié)構(gòu);
樹形結(jié)構(gòu)的結(jié)點(diǎn)形成一種層次結(jié)構(gòu);
遞歸則是它的重點(diǎn),但遞歸這種操作理解起來的難度真的很大,因此要多看看別人的代碼來學(xué)習(xí)。

二.PTA實(shí)驗(yàn)作業(yè)(4分)

2.1 題目1:修理牧場(chǎng)

1 設(shè)計(jì)思路(偽代碼或流程圖)

定義一個(gè)隊(duì)列可以讓進(jìn)隊(duì)元素按從大到小排列
for(i=0;i<N;I++){
依次輸入每一個(gè)數(shù)
并且入隊(duì)
}
while(隊(duì)不空){
出隊(duì)兩個(gè)元素ab
并讓total=a+b;
再進(jìn)隊(duì)兩個(gè)元素。
}
輸出結(jié)果

2.代碼截圖

3.PTA提交列表說明

2.1 題目2:朋友圈

1 設(shè)計(jì)思路(偽代碼或流程圖)

//定義三個(gè)數(shù)組一個(gè)是保留每一個(gè)每一個(gè)數(shù)對(duì)應(yīng)的根節(jié)點(diǎn)一個(gè)保留所有根節(jié)點(diǎn)
//最后一個(gè)保留每一個(gè)根對(duì)應(yīng)的孩子數(shù)
初始化樹中的每個(gè)節(jié)點(diǎn)數(shù)值為-1
先輸入孩子數(shù)和朋友圈數(shù)n,m
for(int i=0;i<m;i++){
輸入每個(gè)朋友圈中人的個(gè)數(shù)
并且保留它們的根節(jié)點(diǎn)
并且記錄每個(gè)下標(biāo)對(duì)應(yīng)的根節(jié)點(diǎn)
當(dāng)這個(gè)根是其它根的孩子則將這個(gè)朋友圈的其他人的根都轉(zhuǎn)成這個(gè)跟
}
遍歷保留每個(gè)節(jié)點(diǎn)根的數(shù)組記錄總數(shù)在最后一個(gè)數(shù)組中
遍歷取最大值

2.代碼截圖

3.PTA提交列表說明

2.1 題目3:表達(dá)式樹

1 設(shè)計(jì)思路(偽代碼或流程圖)

//觀察表達(dá)式樹會(huì)發(fā)現(xiàn)數(shù)字字符的左孩子右孩子都是空的用于后面的表達(dá)式樹的運(yùn)算
//創(chuàng)建兩個(gè)棧一個(gè)是樹節(jié)點(diǎn)的保存類型一個(gè)是字符保存棧
for(int i=0;str[i];i++){
if(字符是數(shù)字)創(chuàng)建樹節(jié)點(diǎn)并且入棧
else
{
if(字符棧棧頂優(yōu)先級(jí)小于str[i]){
則進(jìn)棧字符棧
}
else if(字符棧棧頂優(yōu)先級(jí)大于str[i]){
出棧并且從節(jié)點(diǎn)棧中拿出兩個(gè);
構(gòu)樹并且放回節(jié)點(diǎn)棧中
}
else{
直接出棧
}
}
計(jì)算表達(dá)式
{
if(BT->rchild==NULL&&BT->lchild==NULL)
return BT->data-'0'
else{
a=計(jì)算遍歷右樹
b=計(jì)算遍歷左樹
switch()
{
case '+':return a+b;
case  '-':return a-b
case '*':returna*b
case '/':return a/b
}
}

2.代碼截圖

3.PTA提交列表說明

3.3 我的總分:230

四. 閱讀代碼(必做,1分)

5-27 家譜處理 (30分)

#include <stdio.h>
#include<stdlib.h>
#include<string.h>
/* 評(píng)測(cè)結(jié)果 時(shí)間  結(jié)果  得分  題目  編譯器     用時(shí)(ms)  內(nèi)存(MB)  用戶
2016-08-30 10:31    全部正確    25  5-27    gcc     1   1   569985011
測(cè)試點(diǎn)結(jié)果 測(cè)試點(diǎn)   結(jié)果  得分/滿分   用時(shí)(ms)  內(nèi)存(MB)
測(cè)試點(diǎn)1    答案正確    18/18   1   1
測(cè)試點(diǎn)2    答案正確    2/2     1   1
測(cè)試點(diǎn)3    答案正確    5/5     1   1
測(cè)試點(diǎn)4    答案正確    5/5     1   1
查看代碼*/
typedef struct node *Node;
struct node {char Name[11];int space;int  Parant;
};Node Tree;
int n;int Scan(char*);
int Trace(int);
int judgeParent(int,int);//父子
int judgeSibling(int,int);//兄弟
int judgeAncestor(int,int);//祖先
void work();
int Index(char*);int main() {int m;scanf("%d%d",&n,&m);Tree=(Node)malloc(sizeof(struct node)*n);getchar();//清除緩存for(int i=0; i<n; i++) {Tree[i].space=Scan(Tree[i].Name);Tree[i].Parant=i;}Tree[0].Parant=-1;for(int i=0; i<m; i++) {work();getchar();}return 0;
}
int judgeParent(int x,int y) {if(Tree[x].Parant==x)Tree[x].Parant=Trace(x);return Tree[x].Parant==y;
}
int judgeSibling(int x,int y) {if(Tree[x].Parant==x)Tree[x].Parant=Trace(x);if(Tree[y].Parant==y)Tree[y].Parant=Trace(y);return Tree[x].Parant==Tree[y].Parant;
}
int judgeAncestor(int x,int y) {while(x!=-1) {if(judgeParent(x,y))return 1;else x=Tree[x].Parant;}return 0;
}void work() {char StrX[11],StrY[11],relation[11];scanf("%s%*s%*s%s%*s%s",StrX,relation,StrY);
//  printf("%s - %s - %s\n",StrX,relation,StrY);int X=Index(StrX);int Y=Index(StrY);
//  printf("%d   -    %d",X,Y);int result;switch(relation[0]) {case 'c':result=judgeParent(X,Y);break;case 'p':result=judgeParent(Y,X);break;case 's':result=judgeSibling(X,Y);break;case 'd':result=judgeAncestor(X,Y);break;case 'a':result=judgeAncestor(Y,X);break;default:result=-1;break;}if(result==1)printf("True\n");else if(!result)printf("False\n");
//  else printf("ERROR:系統(tǒng)不能識(shí)別所指定關(guān)系!\n");
}int Index(char*a) {for(int i=0; i<n; i++) {
//      printf("*");if(strcmp(Tree[i].Name,a)==0)return i;}
//  printf("ERROR:所給人名不存在!\n");return -1;
}int Trace(int child) { //往前遍歷第一個(gè)比他縮進(jìn)少的就是他的父親for(int i=child-1; i>=0; i--) {if(Tree[i].space<Tree[child].space) {
//      printf("%d's parent is %d'",child,i);return i;}}return -1;//如果沒有,那么他就是亞當(dāng)夏娃了。
}int Scan(char*p) {char c;int space=0;while((c=getchar())==' ')space++;//記錄字符串前面的空格數(shù)量do {*p++=c;} while((c=getchar())!='\n');*p='\0';return space;
}

這一題我一開始的想法就是先建立一個(gè)樹家譜關(guān)系樹,確實(shí)建立成功勒,但是后面的各個(gè)關(guān)系的處理判斷我就不會(huì)了.

這個(gè)輸入方式就可以忽略沒用的信息
然后就是從數(shù)組去尋找這兩個(gè)名字的位置后轉(zhuǎn)換為各個(gè)小問題的處理,
這種處理方式真的很容易非常巧妙還有就是它有保留家譜中每個(gè)人的信息是用數(shù)組處理的

五. 代碼Git提交記錄截圖

轉(zhuǎn)載于:https://www.cnblogs.com/m208231833/p/8994142.html

總結(jié)

以上是生活随笔為你收集整理的博客作业04--树的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色七七视频| 国产精华7777777 | 黄色片播放器 | 一吻定情2013日剧 | 一区二区福利视频 | 亚洲欧洲免费无码 | 欧美大片视频在线观看 | 午夜免费福利在线 | 亚洲国产成人精品91久久久 | 无码国产69精品久久久久网站 | 国产福利三区 | 日韩中文字幕在线视频 | 日韩欧美一区二区视频 | 夫妻性生活黄色大片 | 超碰碰碰碰 | 香蕉视频免费网站 | 我要看免费黄色片 | 一区二区免费在线观看视频 | 视频国产精品 | 97夜夜操| 黄网地址 | 日本成人小视频 | 亚洲九九精品 | 欧美成人a∨高清免费观看 国产精品999视频 | 99av国产精品欲麻豆 | av中文字幕一区二区 | 国产精品178页 | 强开小嫩苞一区二区三区网站 | 91av高清 | 欧美激情xxxxx | 韩国美女被c | 一起操网站| av一卡二卡 | 亚洲春色在线 | 免费极品av一视觉盛宴 | 国产主播在线一区 | 中文字幕日韩av | 欧美一a一片一级一片 | 中文在线а√天堂官网 | julia在线播放88mav | 欧美激情免费视频 | 欧美激情视频网 | av网站网址| 古代玷污糟蹋np高辣h文 | 啪啪网站视频 | 亚洲av日韩av不卡在线观看 | 一区二区三区黄 | 国产又大又黄又爽 | 深夜视频一区二区三区 | 粗了大了 整进去好爽视频 日本女优中文字幕 | 99热免费| 国产成人精品免费网站 | 国产91欧美 | 美女写真福利视频 | 毛片手机在线 | 国产黄色三级 | 日韩国产一区 | 国产99久久久国产精品免费看 | 香蕉国产片 | 欧美久久综合 | 野花视频免费在线观看 | 青青草原国产 | 亚洲国产精品区 | 亚洲污视频 | 亚洲制服一区二区 | 91久久视频 | 在线欧美日韩 | 天天做天天爱天天爽综合网 | 可以看av的网址 | 强迫凌虐淫辱の牝奴在线观看 | 亚洲a视频在线观看 | a免费观看 | 国产suv精品一区二区69 | 日韩爆操 | 涩涩在线播放 | 欧美成视频 | 天天看天天摸天天操 | 欧美三级在线播放 | 天天激情 | 一级在线看 | 91免费在线视频 | 户外露出一区二区三区 | 动漫涩涩免费网站在线看 | 天天人人综合 | 午夜偷拍福利 | 久久黄色一级 | 国产aaa毛片 | 午夜影院男女 | 青青草娱乐在线 | 一级全黄色片 | jizz欧美性11| 天天射日| 91视频看 | 黑人巨大精品欧美 | 在线看片黄 | 国产1区在线观看 | 青青草原影视 | 欧洲一级片 | 中文写幕一区二区三区免费观成熟 |