前序输入二叉树

#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]);
}

相关文章:

  • 2022-12-23
  • 2021-04-18
  • 2021-05-27
  • 2021-11-26
  • 2022-01-24
  • 2021-05-18
  • 2021-11-22
猜你喜欢
  • 2022-12-23
  • 2021-06-02
  • 2022-12-23
  • 2021-11-30
  • 2021-08-19
  • 2022-12-23
  • 2021-10-01
相关资源
相似解决方案