前驱结点:节点val值小于该节点val值并且值最大的节点
后继节点:节点val值大于该节点val值并且值最小的节点

/*** 前驱元素* **/public BSTreeNode<T> Pred(BSTreeNode<T> node) {if (node.left != null) {return Max(node.left);}BSTreeNode<T> parent = node.parent;while (parent != null && node != parent.right) {node = parent;parent = node.parent;}return parent;}
/*** 后继元素* **/public BSTreeNode<T> Succ(BSTreeNode<T> node) {if (node.right != null) {return Min(node.right);}BSTreeNode<T> parent = node.parent;while (parent != null && node != parent.left) {node = parent;parent = node.parent;}return parent;}
原文:http://www.cnblogs.com/xiejunzhao/p/f5f362c1a89da1663850df9fc4b80214.html