classSolution{public:Node*inorderSuccessor(Node*node){// The successor is somewhere lower in the right subtreeif(node->right){node=node->right;while(node->left)node=node->left;returnnode;}// The successor is somewhere upper in the treewhile(node->parent&&node->parent->left!=node)node=node->parent;returnnode->parent;}};
classSolution{publicNodeinorderSuccessor(Nodenode){// The successor is somewhere upper in the treeif(node.right==null){while(node.parent!=null&&node.parent.left!=node)node=node.parent;returnnode.parent;}// The successor is somewhere lower in the right subtreenode=node.right;while(node.left!=null)node=node.left;returnnode;}}