本文共 1546 字,大约阅读时间需要 5 分钟。
对于给定的二叉树,本题要求你按从上到下、从左到右的顺序输出其所有叶节点。
输入格式:
首先第一行给出一个正整数 N(≤10),为树中结点总数。树中的结点从 0 到 N−1 编号。随后 N 行,每行给出一个对应结点左右孩子的编号。如果某个孩子不存在,则在对应位置给出 “-”。编号间以 1 个空格分隔。输出格式:
在一行中按规定顺序输出叶节点的编号。编号间以 1 个空格分隔,行首尾不得有多余空格。输入样例:
81 -- -0 -2 7- -- -5 -4 6
输出样例:
4 1 5
样例给出最终二叉树结构如图(手写)
#include#include using namespace std;typedef struct{ int data; int left,right;}Node;Node node[10];bool flag[10] = { false};void order(Node no){ queue qe; qe.push(no); int len = 0; while(!qe.empty()){ Node t = qe.front(); if(t.left==-1&&t.right==-1){ len++; if(len==1) cout << t.data; else cout << " " << t.data; } qe.pop(); if(t.left!=-1) qe.push(node[t.left]); if(t.right!=-1) qe.push(node[t.right]); }} int main(){ ios::sync_with_stdio(false); int n; char a,b; cin >> n; for(int i = 0;i > a >> b; node[i].data = i; if(a!='-'){ node[i].left = a-'0'; flag[a-'0'] = true; }else{ node[i].left = -1; } if(b!='-'){ node[i].right = b-'0'; flag[b-'0'] = true; }else{ node[i].right = -1; } } int root; for(int i = 0;i
转载地址:http://jxaz.baihongyu.com/