後継を求める(親ノード付き)


見出し
package _8 ;
/**
 *        ,                (        )。
 *
 */
/* parent   */
public class _4_6Successor0 {
     
public TreeNode<Integer>findSuccessor(TreeNode<Integer>node){
     
	if(node==null)
		return null;
	if(null!=node.right) {
      //     
		return minOfRight(node.right);
	}else {
      //       
		TreeNode<Integer>p=node;//     
		while(p.parent!=null&&p==p.parent.right) {
     
			p=p.parent;
		}
		return p.parent;
	}
	
	
}

private TreeNode<Integer> minOfRight(TreeNode<Integer> right) {
     
	// TODO Auto-generated method stub
	TreeNode <Integer>p=right;
	while(p.left!=null) {
     
		p=p.left;
	}
	return p;
}
}