日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

POJ 1577 Falling Leaves (子母二叉树,给出叶子节点的删除序列,求前序遍历)

發(fā)布時間:2025/3/21 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ 1577 Falling Leaves (子母二叉树,给出叶子节点的删除序列,求前序遍历) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題意:給出一棵字母二叉樹刪除葉子節(jié)點的序列,按刪除的順序排列。讓你輸出該棵二叉樹額前序遍歷的序列。
思路:先把一棵樹的所有刪除的葉子節(jié)點序列存儲下來,然后從最后一行字符串開始建樹即可,最后遍歷輸出。
??? 這里為方便起見,將子母轉(zhuǎn)化成整數(shù)值存儲。

?

#include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> /* AC 題意:給出一棵字母二叉樹刪除葉子節(jié)點的序列,按刪除的順序排列。讓你輸出該棵二叉樹額前序遍歷的序列。 思路:先把一棵樹的所有刪除的葉子節(jié)點序列存儲下來,然后從最后一行字符串開始建樹即可,最后遍歷輸出。這里為方便起見,將子母轉(zhuǎn)化成整數(shù)值存儲。 */ using namespace std; const int maxn=30; char str[30][30];struct node{int l,r; //左兒子的值、右兒子的值。若值為-1,表示不存在左/右兒子。 }node[maxn];void dfs(int u,int v){if(v<u){//當(dāng)u沒有左兒子時,v賦值給u的左兒子,否則遞歸u的左兒子if(node[u].l==-1){node[u].l=v;return;}else{dfs(node[u].l,v);}}else{//當(dāng)u沒有右兒子時,v賦值給u的右兒子,否則遞歸u的右兒子if(node[u].r==-1){node[u].r=v;return;}else{dfs(node[u].r,v);}} } void dlr_print(int u){if(node[u].l==-1&&node[u].r==-1){printf("%c",u+'A');return;}printf("%c",u+'A');if(node[u].l!=-1)dlr_print(node[u].l);if(node[u].r!=-1)dlr_print(node[u].r); } int main() {int m,u,v;while(scanf("%s",str[0])!=EOF){for(int i=0;i<maxn;i++){node[i].l=node[i].r=-1;}m=1;while(1){scanf("%s",str[m]);if(str[m][0]=='*' || str[m][0]=='$')break;m++;}int rootval=str[m-1][0]-'A'; //根節(jié)點的值。for(int i=m-2;i>=0;i--){for(int j=0;str[i][j]!='\0';j++){v=str[i][j]-'A';dfs(rootval,v);}}//前序遍歷輸出 dlr_print(rootval);printf("\n");}return 0; }

?

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

總結(jié)

以上是生活随笔為你收集整理的POJ 1577 Falling Leaves (子母二叉树,给出叶子节点的删除序列,求前序遍历)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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