PTA 03-树2 List Leaves(25 分)

先是找到根节点在哪,然后层序遍历;


#include<iostream>
#define MaxTree 10
#define Tree char 
#include<vector>
#include<queue>
using namespace std;

struct TreeNode
{
	int index;
	Tree Left;
	Tree Right;
	int leftnumber;
	int rightnumber;
	
}T1[MaxTree];

queue<TreeNode>q;


int main()
{
	int n;
	cin>>n;
	int check[10]; 
	for(int i=0;i<n;i++)
	  check[i]=0;
	for(int i=0;i<n;i++)
	{
		T1[i].index=i; 
		cin>>T1[i].Left>>T1[i].Right;
		if(T1[i].Left!='-')
		{
			T1[i].leftnumber=T1[i].Left-'0';
			check[T1[i].leftnumber]=1; 
		}
		else
		  T1[i].leftnumber=-1;
		  
		if(T1[i].Right!='-')
		{
			T1[i].rightnumber=T1[i].Right-'0';
			check[T1[i].rightnumber]=1;
		}
		else
		  T1[i].rightnumber=-1;  
	}
	int Root;
	for(int i=0;i<n;i++)//找根结点
	   if(!check[i])
	   {
	   	  Root=i;
	   	  break;
	   }
	//cout<<Root<<endl;   
    q.push(T1[Root]);
    int count = 0;
    //cout<<"hello world"<<endl;
    while(!q.empty())//层序遍历
    {
    	TreeNode heel =q.front();
    	q.pop();
    	if(heel.leftnumber!=-1)
    	{
    		q.push(T1[heel.leftnumber]); 
		}
		if(heel.rightnumber!=-1)
		{
			q.push(T1[heel.rightnumber]);
		}
		if(heel.leftnumber==-1&&heel.rightnumber==-1)
		{
			if(count == 0)
			{
				cout<<heel.index;
				count=1;
			}
			else
			  cout<<" "<<heel.index;
		}
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值