5-4 List Leaves

来源:互联网 发布:淘宝达人直播申请 编辑:程序博客网 时间:2024/04/27 08:07

点击打开链接

用一个队列实现了二叉树的层序遍历

#include<stdio.h>#include<stdlib.h>#include<iostream>#include<queue>using namespace std;#define null -1struct TreeNode{    int Element;    int right,left;}T1[100];int Buildtree(struct TreeNode T[]){    int n,chick[100],root;    char  left,right;    cin>>n;    if(n)    {        for(int i=0;i<n;i++)            chick[i]=0;        for(int i=0;i<n;i++)        {            T[i].Element=i;            cin>>left>>right;            if(left != '-')            {                T[i].left=left-'0';                chick[T[i].left]=1;            }            else                T[i].left=-1;            if(right != '-')            {                T[i].right=right-'0';                chick[T[i].right]=1;            }            else                T[i].right=-1;        }        for(int i=0;i<n;i++)        {            if(chick[i]==0)            {                root=i;                break;            }        }    }    else        root=-1;    return root;}int flag=0;/*void pretravel(int bt){    if(bt>=0)    {        pretravel(T1[bt].left);        if(T1[bt].left==null &&T1[bt].right==null)        {            if(flag)                cout<<" ";            cout<<bt;            flag++;        }        pretravel(T1[bt].right);    }}*/void leveltravel(int bt){    queue<int> q;    int t;    if(bt<0)        return;    q.push(bt);    while(!q.empty())    {        int tmp=q.front();        q.pop();        if(T1[tmp].left!=null)            q.push(T1[tmp].left);        if(T1[tmp].right!=null)             q.push(T1[tmp].right);        if(T1[tmp].left==null && T1[tmp].right==null )        {            if(flag)                cout<<" ";            cout<<tmp;            flag++;        }    }}int main(){    int Root;    Root=Buildtree(T1);    leveltravel(Root);}


原创粉丝点击