[PAT]1102. Invert a Binary Tree (25)

#include <iostream>
#include <vector>
#include <string>
#include <stdlib.h>
#include <math.h>
#include <sstream>
#include <map>
#include <set>
#include <queue>
#include <algorithm>
using namespace std;
 


typedef struct node
{
	int name;
	int level;
	node* left;
	node* right;
	node* parent;
};

 int N;
queue<node*> Qn;
void bfs(node* root)
{
	Qn.push(root);
 

	while(!Qn.empty())
	{
		root = Qn.front();

		if(root->right)
			Qn.push(root->right);
		if(root->left)
			Qn.push(root->left);

		 node* temp = Qn.front();

		 if(Qn.size()>1)
			cout<<temp->name<<" ";
		 else
			 cout<<temp->name<<endl;

		 Qn.pop();
		 
	}
	


}

void inorder(node* ptr)
{
	static int cnt = 0;

	if(ptr->right)
		inorder(ptr->right);


		cnt++;

		if(cnt<N)
			cout<<ptr->name<<" ";
		else
			cout<<ptr->name<<endl;



	if(ptr->left)
		inorder(ptr->left);

	return;
}



int main(void)
{
  

   cin>>N;

   vector<node> tree;


   node temp;
   temp.name = -1;
   temp.level =-1;
   temp.left=NULL;
   temp.right = NULL;
   temp.parent = NULL;
   tree.assign(N,temp);


 
   for(int i=0;i<N;i++)
   {
	 
		 tree[i].name = i;
	     char ln,rn;
		 cin>>ln>>rn;

		 if(ln !='-')
		 {

			 int l = ln-'0';
			 tree[i].left = &tree[l];
			 tree[l].parent = &tree[i];
	 
		 }
		 if(rn !='-')
		 {
			  int r = rn-'0';
			 tree[i].right = &tree[r];
			 tree[r].parent = &tree[i];
		 }

   }

   node* ptr = &tree[0];
   while(ptr->parent)
   {
	   ptr = ptr->parent;
   }

    bfs(ptr);
	inorder(ptr);


	return 0;
}
 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值