国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

求根結點到指定結點的路徑

2019-11-08 01:33:43
字體:
來源:轉載
供稿:網友

Description

二叉樹采用二叉鏈表存儲結構進行存儲,需要輸出從二叉樹的樹根到指定結點的完整路徑。按照給出的先序序列根據教材中算法6.4所示的算法建立二叉鏈表。二叉樹中每個結點的數據都不相同。

Input

包含多組測試數據。每組測試數據的第一行給出二叉樹的先序遍歷序列(結點數至少1個,不超過100個),用于建立二叉鏈表存儲的二叉樹。第二行一個整數m,表示有m個結點需要輸出從根節點到它自己的路徑。接下來m行,每行一個字符c,表示需要輸出從根節點到本結點的路徑。

Output

每組數據輸出m行,每行為一個從根節點到對應結點之間的路徑。

Sample Input 

ABC^^DE^G^^F^^^3ADG

Sample Output

AABDABDEG分析:首先要建立一個二叉樹吧,然后慢慢的找= =。從根結點粗發,用一個容器vector把找過的點放進去,找到了就輸出返回,沒找到再依次尋找左右子樹~參考代碼:
#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<string>#include<algorithm>#include<stack>#include<queue>#include<map>#include<vector>#include<iostream> using namespace std;typedef struct BiTNode{    char d;    struct BiTNode *l;    struct BiTNode *r;}*BiTree,BiTreeNode;char ch;bool flag; void CreateBiTree( BiTree &T){    char tmp;    if( flag)        scanf("%c",&tmp);    else    {        tmp = ch;        flag = true;    }     if( tmp == '^')        T = NULL;    else    {        T = new BiTreeNode;        T->d = tmp;        CreateBiTree( T->l);        CreateBiTree( T->r);    } } void findpath( BiTree &T, char x, vector<int> &v){    if( T == NULL)        return;    v.push_back( T->d);    if( T->d == x)    {        flag = 1;        for( int i = 0; i < v.size(); i++)            putchar(v[i]);        putchar(10);        return;    }    findpath( T->l, x, v);    findpath( T->r, x, v);    v.pop_back(); } int main(){    while( ~scanf("%c",&ch))    {        if( ch == '/n')            continue;        BiTree T = NULL;        flag = false;        CreateBiTree( T);         int n;        scanf("%d",&n);        char x;        for( int i = 1; i <= n; i++)        {            scanf(" %c",&x);            vector<int> v;            findpath( T,x,v);            //putchar(10);        }     }     return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凤凰县| 沙河市| 武定县| 新昌县| 固始县| 扎鲁特旗| 叙永县| 邮箱| 宁波市| 澜沧| 武平县| 沙河市| 灌阳县| 新乡县| 吐鲁番市| 舞阳县| 宿迁市| 西吉县| 类乌齐县| 香港 | 淳安县| 都匀市| 兰西县| 赤城县| 鄂州市| 肃宁县| 崇仁县| 大埔区| 开鲁县| 奉新县| 达日县| 额济纳旗| 广饶县| 岑溪市| 横山县| 边坝县| 宁陕县| 万全县| 繁昌县| 东宁县| 克拉玛依市|