1.二叉树节点类
package cn.ljj.data; public class Node { //节点数据项 public long data; //左子节点 public Node leftChildren; //右子节点 public Node rightChildren; //构造方法 public Node(long data){ this.data = data; } }
2.二叉树的基本操作类
package cn.ljj.data; public class Tree { // 根节点 public Node root; /** * 插入节点 * * @param value */ public void insert(long value) { // 封装节点Node Node node = new Node(value); //当前接节点 Node current = root; //父节点 Node parent = null; if (root == null) { root = node; return; } while (true) { parent = current; if (current.data >= value) { current = current.leftChildren; if (current == null) { parent.leftChildren = node; return; } } else { current = current.rightChildren; if (current == null) { parent.rightChildren = node; return; } } } } /** * 查找节点 param value */ public Node find(long value) { Node currentNode = root; while(currentNode!=null){ if(value==currentNode.data){ return currentNode; }else if(value>currentNode.data){ currentNode = currentNode.rightChildren; }else{ currentNode = currentNode.leftChildren; } } return currentNode; } /** * 先序遍历 */ public void preOrder(Node node){ if(node!=null){ System.out.println(node.data); preOrder(node.leftChildren); preOrder(node.rightChildren); } } /** * 中序遍历 * @param args */ public void inOrder(Node node){ if(node!=null){ inOrder(node.leftChildren); System.out.println(node.data); inOrder(node.rightChildren); } } /** * 后序遍历 * @param args */ public void afterOrder(Node node){ if(node!=null){ afterOrder(node.leftChildren); afterOrder(node.rightChildren); System.out.println(node.data); } } }