• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

  • 联系
  • 订阅
  • 管理

View Post

sicily 1156 Binary tree

            前序输入二叉树

#include<iostream>
#include <memory.h>
using namespace std;

struct node
{
	char content;
	int left;
	int rigth;
};
node tree[1001];

void pre_print(node);

int main()
{	
	bool isroot[1001]; //记录是否根节点
	int id[1001]; //节点编号
	int cases, n, left, right, k;
	char c;
	while (cin >> cases)
	{
		memset(isroot, true, sizeof(isroot));

		k = 0;
		for (int i = 0; i < cases; i++)
		{
			cin >> n >> c >> left >> right;
			tree[n].left = left;
			tree[n].rigth = right;
			tree[n].content = c;
			isroot[left] = isroot[right] = false; //左儿子和右儿子都不是根节点
			id[k++] = n;		
		}

		//查找根节点
		for (int i = 0; i < k; i++)
			if (isroot[id[i]])
			{
				pre_print(tree[id[i]]);
				cout << endl;
				break;
			}
	}
	return 0;
}

void pre_print(node root)
{	
	cout << root.content;
	if (root.left != 0)
		pre_print(tree[root.left]);
	if (root.rigth != 0)
		pre_print(tree[root.rigth]);
}

posted on 2010-11-20 14:04  sysuwhj  阅读(1060)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3