一、树的基本概念
树是一种非线性的数据结构,它由节点组成,有一个特定的节点称为根节点,其余节点可以分为多个互不相交的子树。
树中的节点具有以下特点:
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();
}
}

被折叠的 条评论
为什么被折叠?



