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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

洛谷——P1305 新二叉树(新建二叉树以及遍历)

發布時間:2023/12/6 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷——P1305 新二叉树(新建二叉树以及遍历) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述
輸入一串二叉樹,用遍歷前序打出。

輸入輸出格式
輸入格式:

?

第一行為二叉樹的節點數n。(n \leq 26n≤26)

后面n行,每一個字母為節點,后兩個字母分別為其左右兒子。

空節點用*表示

?

輸出格式:

?

前序排列的二叉樹

?

輸入輸出樣例
輸入樣例#1: 復制
6
abc
bdi
cj*
d**
i**
j**
輸出樣例#1: 復制
abdicj

#include<bits/stdc++.h> using namespace std;struct Node{char lch = '*';//左孩子 默認為* 表示沒有char rch = '*';//右邊的孩子 }; bool vis[26];//判斷有沒有出現過 遍歷的時候直接用了 bool isNotRoot[26];//判斷是不是根如果出現了還是false那么就根 Node tree[29];//void build(char root,char left,char right){vis[root-'a']=true;if(left !='*'){tree[root-'a'].lch = left; isNotRoot[left-'a'] = true;//肯定不是根了 vis[left-'a'] = true;} if(right !='*'){tree[root-'a'].rch = right;isNotRoot[right-'a'] = true;//肯定不是根了 vis[right-'a'] = true;//出現過了 } } void pre(char root){//前序遍歷 if(root=='*'){return;//如果是空的直接返回 }printf("%c",root);pre(tree[root-'a'].lch);pre(tree[root-'a'].rch);} int main(){int n = 0;scanf("%d",&n);for(int i = 0;i < n;i++){char num[4];scanf("%s",num);build(num[0],num[1],num[2]);//變成一二叉樹了 } for(int i = 0;i<26;i++){//找到樹根 if(vis[i]==true && isNotRoot[i]==false){pre(i+'a');break; }} printf("\n");return 0; }

?

轉載于:https://www.cnblogs.com/xiaonuolen/p/10284598.html

總結

以上是生活随笔為你收集整理的洛谷——P1305 新二叉树(新建二叉树以及遍历)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。