本文共 1063 字,大约阅读时间需要 3 分钟。
已知一个按先序输入的字符序列,如abd,eg,cf,(其中,表示空结点)。请建立该二叉树并按从上到下从左到右的顺序输出该二叉树的所有叶子结点。
输入数据有多行,每一行是一个长度小于50个字符的字符串。
按从上到下从左到右的顺序输出二叉树的叶子结点。
Input
abd,eg,cf, xnl,i,u,Output
dfg uli#include#include using namespace std;typedef struct node{ char data; node *l,*r;}Tree;char pre[55];int cnt=0;Tree* buildtree_pre(){ if(pre[cnt]==',') { cnt++; return NULL; } Tree *root = new Tree; root->data = pre[cnt++]; root->l = buildtree_pre(); root->r = buildtree_pre(); return root;}//思路和层次遍历差不多void leave_out(Tree *root){ queue t; t.push(root); while(!t.empty()) { root = t.front(); t.pop(); if(root) { if(!root->l && !root->r) cout< data; t.push(root->l); t.push(root->r); } }}int main(){ ios::sync_with_stdio(false); Tree *root; while(cin>>pre) { cnt=0; root = buildtree_pre(); leave_out(root); cout<
转载地址:http://jaezk.baihongyu.com/