题解 | #二叉树的下一个结点#

二叉树的下一个结点

http://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e

typedef struct TreeLinkNode BNode;


BNode* find_In(BNode* root)
{
	BNode* tmp;
	if (root == NULL)
		return NULL;
	tmp = root;
	while (!tmp&&!(tmp->left))
	{
		tmp = tmp->left;
	}
	return tmp->left;
}

BNode* Find_Next2( BNode* p)
{
	if (p->next == NULL)
		return NULL;
	else {
		if (p->next->left == p)
			return p->next;
		else
			return Find_Next2(p->next);
	}
}

BNode* Find_Next(BNode* p)
{
	if (!p)
		return NULL;
	if (p->right != NULL && p->right->left != NULL)
		return (find_In(p->right));
	else if (p->right != NULL)
	{
		return (p->right);
	}
	else if (p->next == NULL)
		return NULL;
	else {
		if (p->next->left == p)
			return p->next;
		else
			return Find_Next2(p->next);
	}

}


struct TreeLinkNode* GetNext(struct TreeLinkNode* pNode ) {
    BNode* next;
    if(pNode==NULL)
        return NULL;
    next=Find_Next(pNode);
    return next;
}


全部评论

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务