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

二叉树的下一个结点

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;
}


全部评论

相关推荐

牛客722552937号:新锐之星有点坑爹,特别是对男的
点赞 评论 收藏
分享
10-30 10:16
南京大学 Java
龚至诚:给南大✌️跪了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务