一、树的基本概念
树是一种非线性的数据结构,它由节点组成,有一个特定的节点称为根节点,其余节点可以分为多个互不相交的子树。
树中的节点具有以下特点:
1.每个节点有零个或多个子节点。
2.除了根节点外,每个节点有且仅有一个父节点。
3.没有父节点的节点就是根节点,没有子节点的节点称为叶子节点。
二、代码示例
下面是二叉树的代码示例(Java语言)
package dataStructure.tree;//二叉树的节点类
public class TreeNode {//用来保存节点的数据int data;//用来保存该节点的左右子节点TreeNode left;TreeNode right;//使用构造方法来限制节点对象必须有值public TreeNode(int data){this.data = data;}
}
package dataStructure.tree;//二叉树类
public class BinaryTree {//二叉树的根节点private TreeNode root;//往二叉树中添加数据public void add(int e) {//先创建节点对象,然后再判断他要放到什么位置TreeNode node = new TreeNode(e);if (root == null) {//如果当前树是空的,则把该节点作为根节点root = node;} else {add(root, node);}}private void add(TreeNode t, TreeNode n) {if (n.data < t.data) {if (t.left == null) {t.left = n;return;}add(t.left, n);} else {if (t.right == null) {t.right = n;return;}add(t.right, n);}}//前序遍历public void preOrder() {preOrder(root);}private void preOrder(TreeNode node) {if (node == null) {return;}System.out.println(node.data);preOrder(node.left);preOrder(node.right);}//中序遍历public void middleOrder() {middleOrder(root);}private void middleOrder(TreeNode node) {if (node == null) {return;}middleOrder(node.left);System.out.println(node.data);middleOrder(node.right);}//后序遍历public void rearOrder() {rearOrder(root);}private void rearOrder(TreeNode node) {if (node == null) {return;}rearOrder(node.left);rearOrder(node.right);System.out.println(node.data);}public static void main(String[] args) {BinaryTree bt = new BinaryTree();bt.add(10);bt.add(5);bt.add(15);bt.add(3);bt.add(8);bt.add(2);bt.add(4);bt.add(7);bt.add(9);bt.add(12);bt.add(18);bt.add(11);bt.add(13);bt.add(16);bt.add(20);bt.preOrder();System.out.println("-----------------------------------------------");bt.middleOrder();System.out.println("-----------------------------------------------");bt.rearOrder();}
}