一、BTNode<E>的构造函数
二、取得和设置数据及连接
package jiangning.tree;
public class BTNode<E> {
       private E data ;
       private BTNode<E> left ;
             private BTNode<E>  right ;
                                        
//    构造器初始化
       public BTNode(E initialData, BTNode<E> initialLeft, BTNode<E> initialRight){
             data = initialData;
             left = initialLeft;
             right = initialRight;
      }
       public E getData() {//从这个结点取得数据
             return data ;
      }
       public void setData(E newData) {
             this.data = newData;
      }
       public BTNode<E> getLeft() {//取得指向这个结点的左孩子的引用
             return left ;
      }
       public void setLeft(BTNode<E> left) {
             this.left = left;
      }
       public BTNode<E> getRight() {//取得指向这个结点的右孩子的引用
             return right ;
      }
       public void setRight(BTNode<E> right) {
             this.right = right;
      }
}
三、测试一个结点是否是叶子结点
左孩子的引用和右孩子的引用都是空引用。
public boolean isLeaf(){
    return (left == null) && ( right == null );
}

四、从最左结点活最右结点获取数据
最左结点是字符L,不是字符R,因为R使用了一个右连接。
    public E getLeftmostData(){
          if(left == null){
                return data ;
         }
          return left .getLeftmostData();//利用递归获取最左边的元素
}

五、删除最左或最右结点
1.如图
3.第九章 树--9.3 二叉树结点类表示
2.删除最左结点的不同情况分析
1)只有一个结点:如上图只有一个节点8时,删除最左结点,起始就是删除当前节点8,这样返回的树应该是null。
3.第九章 树--9.3 二叉树结点类表示3.第九章 树--9.3 二叉树结点类表示
2)只有一个右节点情况,删除8的最左节点,在删除节点8后,剩余结点6,
3.第九章 树--9.3 二叉树结点类表示
3)存在最左结点:
3.第九章 树--9.3 二叉树结点类表示


在进行删除的时候实际上时对原的树进行重新赋值。

用this关键字,一个指向调用这个方法的对象的应用。
public BTNode<E> removeLeftmost(){
           if(left == null){//左结点是根结点因为它没有孩子。
                 return right ;
          } else{
                 left = left .removeLeftmost();
                 return this ;
          }
    }

You never know till you have tried.

不尝试,不知晓。