题目
中序遍历下的下一个节点
代码
class Solution {
public:
TreeLinkNode* GetNext(TreeLinkNode* pNode) {
if (pNode == NULL)
return NULL;
TreeLinkNode* pret = pNode;
if (pNode->right){//如果目标节点有右子树,那么一定在这个右子树的最左端。
pret = pNode->right;
while(pret->left){
pret = pret->left;
}
return pret;
}
while(pNode->next){//如果这个目标节点没有右子树,还要分情况讨论
pret = pNode->next;
if(pret->left == pNode)//这玩意的父节点在他右面,那父节点就是他的下一个
return pret;
pNode = pNode->next;//这玩意的父节点在他的左面,那么要么是空,要么就看有没有父节点的父节点在右侧的情况出现
}
return NULL;
}
};