用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c代码库

树前中后序遍历、高度、叶子节点数

2019-08-26 作者:海鲜菌菇齐齐酱举报

[c]代码库

void preorder(Tree T)
//前序
{
	if(T != NULL)
	{
		printf("%c ", T->data);
		preorder(T->lchild);
		preorder(T->rchild);
	}
}

void inorder(Tree T)
//中序
{
	if(T != NULL)
	{
		inorder(T->lchild);
		printf("%c ", T->data);
		inorder(T->rchild);
	}
}

void postorder(Tree T)
//后序
{
	if (T != NULL)
	{
		inorder(T->lchild);
		inorder(T->rchild);
		printf("%c ", T->data);
	}
}

int Max(int a, int b)
{
	return a>=b?a:b;
}

int Hight(Tree T)
{
	if(T == NULL)
	{
		return 0;
	}
	else
	{
		return Max(Hight(T->lchild), Hight(T->rchild)) + 1;
	}
}

int Node(Tree T)
{
	if (T == NULL)
	{
		return 0;
	}
	else
	{
		return Node(T->lchild)+Node(T->rchild)+1;
	}
}

TreeNode* Moveto(Tree T, char c)
{
	if(T != NULL)
	{
		if(T->data == c)
		{
			return T;
		}
		Tree T1 = Moveto(T->lchild,c);
		if (T1 != NULL)
		{
			return T1;
		}
		Tree T2 = Moveto(T->rchild,c);
		if (T2 != NULL)
		{
			return T2;
		}
	}
	else
	{
		return NULL;
	}
}


int main()
{
	Tree T = NULL;
	char* pre = "EBADCFHGIKJ";
	char* in =  "ABCDEFGHIJK";

	CreateTree(pre, in ,0, 0, 11, T);

	printf("%d\n", Hight(T));

	preorder(T);
	printf("\n");
	inorder(T);

	/*int a;
	scanf("%d", &a);*/
	getchar();
	getchar();
	return 0;


分享到:
更多

网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。