首先,申明一点,此博客用于仅用于平时学习、总结及复习。
最近老师出了一个有关二叉树的迭代器的题目,总是想不明白,于是查了很多资料,现将一些重要知识总结如下:
关于数据结构 树这一章重要的知识点有两点:二叉树和Huffman树
- 二叉树创建及遍历
。。。。。。待填
二叉树输入结点 insert()
public void insert(Object data){
root=insert(root,data);
}
public(应该改为private) Node insert(Node node,Object data){ //这一部分要好好的学习
if(node==null){
node=new Node(data);
}else if(node.data<=data){
insert(node.rchild,data);
}else{
insert(node.lchild,data);
}
return node;
}
/// 创建二叉树
public void buildTree(Object[] obj){
for(Object data:obj){
insert(data);
}
}
/// 先序遍历二叉树
public void travesalBTNode(){
taversalBTNode(root);
}
private Node travesalBTNode(Node node){
if(node==null) return;
System.out.println(“Node.data=”+data);
travesal(node.lchild);
travesal(node.rchild);
}
insert()为什么需要 Node node 参数?值传递
注意它的封装性和访问控制权限,类以及 BinaryTree 的函数都相应有
private 和 public 方法来实现很好的封装和访问控制,这种方式以后自己要多加学习,积极运用。
2. Huffman树的结点和创建
///哈弗曼树结点定义
public class Node implements comparable{
private Object data;
private Node lchild;
private Node rchild;
public Node(){}
public Node(Object data){//构造函数
this.data=data;
lchild=rchild=null;
}
public Object getData(){
return data;
}
public void setData(Object data){
this.data=data;
}
public Node getLeftChild() {
return lchild;
}
public void setLeftChild(Node lchild) {
this.lchild = lchild;
}
public Node getRightChild() {
return rchild;
}
public void setRightChild(Node rchild) {
this.rchild = rchild;
}
public Object compareTo(Object o){//重写comparable类的compareTo方法
Node that=(Node)o;
Object result=this.data-that.data;
return result>0?1:result==0?0:-1;
}
}
“`
有待完善。。。