//找出二叉树中序遍历的某个结点的下一个结点
Node *GetNext(Node *pNode){
if (pNode==NULL)
{
return NULL;
}
//1.有右子树
if (pNode->right!=NULL)
{
//右子树中最左边结点
Node *p=pNode->right;
while (p->left!=NULL)
{
p=p->left;
}
return p;
}
else if (pNode->parent!=NULL)
{
//2.是父结点的左结点
if (pNode->parent->left==pNode)
{
return pNode->parent;
}
else
{
//3.找到到根结点最近的作为左结点的父结点
Node *p=pNode->parent;
while (p!=NULL&&p->parent!=NULL&&p==p->parent->right)
{
p=p->parent;
}
if (p==NULL)
{
return NULL;
}
else
{
return p->parent;
}
}
}
}
二叉树的下一个结点
最新推荐文章于 2021-03-17 10:27:35 发布