题解 | #二叉树的下一个结点#
二叉树的下一个结点
https://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e
/**
* struct TreeLinkNode {
* int val;
* struct TreeLinkNode *left;
* struct TreeLinkNode *right;
* struct TreeLinkNode *next;
* };
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pNode TreeNode类
* @return TreeNode类
*/
struct TreeLinkNode* GetNext(struct TreeLinkNode* pNode ) {
// write code here
// 存在右子树,找到右子树最左边的结点
if( pNode->right )
{
pNode = pNode->right;
while(pNode->left)
{
pNode = pNode->left;
}
return pNode;
}
while(pNode->next)
{
if(pNode->next->left == pNode)
return pNode->next;
pNode = pNode->next;
}
// 不存在右子树,只有左子树。如果它是根节点直接return null;否则一直找到根节点
return NULL;
}