自己实现Java中二叉查找树的部分功能(待补充)
来源:互联网 发布:南京正厚软件培训知乎 编辑:程序博客网 时间:2024/05/26 19:17
用于实现二叉查找树的节点对象
package custom.tree;/** * 用于实现二叉树结构的节点 */public class TreeNode<E> { //左叶子节点 private TreeNode<E> left; //右叶子节点 private TreeNode<E> right; //节点上的数据 private E data; public TreeNode() { super(); } public TreeNode(TreeNode<E> left, TreeNode<E> right, E data) { super(); this.left = left; this.right = right; this.data = data; } public TreeNode<E> getLeft() { return left; } public void setLeft(TreeNode<E> left) { this.left = left; } public TreeNode<E> getRight() { return right; } public void setRight(TreeNode<E> right) { this.right = right; } public E getData() { return data; } public void setData(E data) { this.data = data; }}
二叉树的具体实现代码:
package custom.tree;import java.util.Comparator;//二叉查找树public class BinaryTree<E> { // 根节点 private TreeNode<E> root; // 比较器,用来比较存放的数据 private Comparator<? super E> comparator; public BinaryTree() { } // 传入比较器 public BinaryTree(Comparator<? super E> comparator) { this.comparator = comparator; } //获取根节点 public TreeNode<E> getRoot() { return root; } //获取最右边的节点 public TreeNode<E> getMaxNode(){ TreeNode<E> p = root; if(p.getRight() != null){ p = p.getRight(); } return p; } /** * 用来比较节点中的数据的大小,模仿TreeMap的源码 * 若 e1 > e2 ,返回正数 */ public int compare(E e1, E e2) { return comparator == null ? ((Comparable<? super E>) e1).compareTo((E) e2) : comparator.compare((E) e1, (E) e2); } /** * 添加数据同时对数据进行排序 * 建立二叉树结构 */ public void add(E data) { TreeNode<E> node = new TreeNode<E>(); node.setData(data); if (root == null) { root = node; } else { TreeNode<E> tar = root; while (true) { int r = compare(data,tar.getData()); if(r > 0){ TreeNode<E> right = tar.getRight(); if(right == null){ tar.setRight(node); break; }else{ tar = right; } }else if(r < 0){ TreeNode<E> left = tar.getLeft(); if(left == null){ tar.setLeft(node); break; }else{ tar = left; } }else{ break; } } } } /** * 使用递归遍历查找节点 * 从左到右输出节点上的数据 */ public void foreachNode(TreeNode<E> treeNode){ if(treeNode.getLeft() != null) foreachNode(treeNode.getLeft()); System.out.println(treeNode.getData()); if(treeNode.getRight() != null) foreachNode(treeNode.getRight()); }}
阅读全文
0 0
- 自己实现Java中二叉查找树的部分功能(待补充)
- 二叉树学习笔记(待补充)
- 二分查找(待补充)
- 自己做的java 记事本(查找,替换部分功能缺失) 多多交流
- 找出二叉树中最大的二叉查找树部分
- QT视图标尺功能实现(待补充)
- java :非递归方法的二叉搜索树,实现部分功能
- STM32部分学习经验(待补充)
- vector实现(待补充)
- 二叉查找树的Java实现
- java 实现的二叉查找树
- 二叉查找树的java实现
- 二叉查找树的Java实现
- 数据结构--二叉查找树的java实现
- 二叉查找树的java实现
- 二叉查找树Java的实现
- Java中正则的一点注意事项(待补充)
- 二叉查找树的基类实现(中)
- centos7 mariadb 安装配置纪录(个人纪录)
- Visual Studio 2017 调试 微信公众号服务端
- C++动态内存
- [C]将句子中的单词位置倒置而不改变单词内部结构
- input外面为啥包裹form?
- 自己实现Java中二叉查找树的部分功能(待补充)
- 构造数据集
- 【Scikit-Learn 中文文档】集成方法
- 备忘录
- IDEA的project和module
- IntelliJ IDEA 学习笔记
- 要注意SecureCrt缓冲区的大小
- Struts2框架
- python 文件读写