题解 | #从上往下打印二叉树#

从上往下打印二叉树

http://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed259701

C语言的一种实现

typedef struct TreeNode Node;

#define Ele Node*

typedef struct Queue {
	Ele val;
	struct Queue* next;
}Queue;

typedef struct Queue_head {
	Queue* head;
	Queue* end;
}QQueue;

void AddQ(QQueue* P, Ele v)
{
	Queue* tmp = (Queue*)malloc(sizeof(Queue));
	if (!tmp )
	{
		printf("空间不够\n");
		return;

	}

	tmp->val = v;
	tmp->next = NULL;
    if(P->end)
        P->end->next=tmp;
    P->end = tmp;
	if (P->head == NULL)
		P->head = tmp;
}

Ele DeleteQ(QQueue* P)
{
	Queue* head;
	Ele tmp;
	if (P->head == NULL)
	{
		printf("队列空\n");
		return NULL;
	}
	head = P->head;
	if (P->head == P->end)
		P->head = P->end = NULL;
	else
		P->head = P->head->next;
	tmp = head->val;
	free(head);
	return tmp;
}


int* PrintFromTopToBottom(struct TreeNode* root, int* returnSize ) {
    int *a=(int*)malloc(sizeof(int)*1000);
    QQueue* Head = (QQueue*)malloc(sizeof(QQueue));
	Node* tmp;
    
	if (!root)
		return NULL;
	Head->end = NULL;
	Head->head = NULL;
    
    *returnSize=0;
	AddQ(Head, root);
	while (Head->head)
	{
		tmp = DeleteQ(Head);
        (*returnSize)++;
		a[(*returnSize)-1]=tmp->val;
		if (tmp->left)
			AddQ(Head, tmp->left);
		if (tmp->right)
			AddQ(Head, tmp->right);
	}
    
    return a;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 17:28
25届每天都在焦虑找工作的事情0offer情绪一直很低落硬撑着面了一个岗位岗位有应酬的成分面试的时候hr给我出各种场景题问的问题比较犀利 有点压力面的感觉感觉有点回答不上来本来就压抑的情绪瞬间爆发了呢一瞬间特别想哭觉得自己特别没用没绷住掉眼泪了事后想想觉得自己挺有病的 真的破大防了
喜欢唱跳rap小刺猬...:我觉得没关系吧,之前有一次面试leader给我压力面,我顶住了压力,结果入职的时候发现组里氛围很差,果断跑路。其实从面试就能大概看出组的情况,面试体验好的组倒是不一定好,但是面试体验不好的组。。。就很难说
点赞 评论 收藏
分享
06-23 11:28
门头沟学院 Java
牛客91966197...:也有可能是点拒绝的时候自动弹的话术
点赞 评论 收藏
分享
05-09 12:23
已编辑
华南理工大学 Java
野猪不是猪🐗:给他装的,双九+有实习的能看的上这种厂我直接吃⑨✌们拿它练练面试愣是给他整出幻觉了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务