一、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.如图
2.删除最左结点的不同情况分析
1)只有一个结点:如上图只有一个节点8时,删除最左结点,起始就是删除当前节点8,这样返回的树应该是null。
2)只有一个右节点情况,删除8的最左节点,在删除节点8后,剩余结点6,
3)存在最左结点:
在进行删除的时候实际上时对原的树进行重新赋值。
用this关键字,一个指向调用这个方法的对象的应用。
public BTNode<E> removeLeftmost(){
if(left == null){//左结点是根结点因为它没有孩子。
return right ;
} else{
left = left .removeLeftmost();
return this ;
}
}
You never know till you have tried.
不尝试,不知晓。
转载于:https://blog.51cto.com/2008jiangning/1311217