算法是编程的灵魂——Java中的森林、树、二叉树
1.树和森林
树是一种基本的数据结构。一棵树只有一个根结点。可以没有或有多个子结点。每个子结点以及子结点以下的结点又组成了一棵树,叫做子树。在一棵树结构中,只有父结点,没有子结点的结点叫做叶子结点
森林是多棵互不相交的树的集合。对树中的每个结点而言,其子树的集合就是森林。
2.二叉树
更多二叉树见
http://www.iteye.com/topic/561141
二叉树是另一种树型结构,它的特点是每个结点至多只有两棵子树,并且二叉树中的子树还有左右之分,它们的次序不能颠倒。
3.二叉树结点的表示
Class Node{ private Object data; //结点中存储的数据 private Node parent; //父结点的引用 private Node lChild; //左结点的引用 private Node rChild; //右结点的引用} /** * 将一个整型数组存储在一个查找二叉树中 * @param array 被存储的数组 * @return 查找二叉树的根节点 */public TreeNode arrayToTree(int[] array) { TreeNode root = new TreeNode(array[0]); for (int i = 1; i < array.length; i++) { TreeNode node = new TreeNode(array[i]); insertNode(node, root); } return root;} private void insertNode(TreeNode node, TreeNode root) { if ((Integer) node.getObj() < (Integer) root.getObj()) { if (root.getLchild() == null){ root.setLchild(node); } else insertNode(node, root.getLchild()); } else { if (root.getRchild() == null){ root.setRchild(node); } else insertNode(node, root.getRchild()); }} /** * 中序遍历二叉树 * @param root 二叉树的根节点 */public void traverseTree(TreeNode root) { if (root != null) { int data = (Integer) root.getObj(); traverseTree(root.getLchild()); System.out.println(data); traverseTree(root.getRchild()); }}