二叉树的下一个结点

给定一个结点,找出中序遍历序列的下一个结点?

public TreeLinkNode GetNext(TreeLinkNode pNode)
{
    if(pNode == null)
        return null;

    if(pNode.right != null){
        TreeLinkNode after = pNode.right;
        while(after.left != null){
            after = after.left;
        }
        return after;
    }


    while(pNode != null){
        TreeLinkNode p = pNode.next;
        if(p != null && p.left == pNode)
            return p;
        pNode = p;
    }
    return null;
}