前言:大三了,正在努力复习大一大二的知识,坑爹呀,由于做得项目里很少用到这些重要的基础知识,比如数据结构、算法,项目只会涉及简单的算法、数据结构知识,所以该忘的都给忘了,必须复习。
节点类
package BinaryTree;
public class Node {
// 左子节点
Node leftNode;
// 右子节点
Node rightNode;
// 节点值
char value;
}
二叉树类
package BinaryTree;
import javax.swing.text.AbstractDocument.Content;
public class BinaryTree {
// 根节点
Node root;
// 二叉树所有节点值(默认为先序遍历)
char content[];
// content的索引
static int index = 0;
public char[] getContent() {
return content;
}
public void setContent(char[] content) {
this.content = content;
}
public BinaryTree(char[] content) {
root = new Node();
setContent(content);
}
public Node createBinaryTree(Node n) {
char ch = content[index];
// 用于获取二叉树某一节点的值
// System.out.println(index);
index++;
if ('$' == ch)
n = null;
else {
n.value = ch;
n.leftNode = createBinaryTree(new Node());
n.rightNode = createBinaryTree(new Node());
}
return n;
}
/**
* 递归先序
* */
public void preOrder(Node n) {
if (n != null) {
System.out.print(n.value + " ");
preOrder(n.leftNode);
preOrder(n.rightNode);
}
}
/**
* 递归中序
* */
void inOrder(Node n) {
if (n != null) {
inOrder(n.leftNode);
System.out.print(n.value + " ");
inOrder(n.rightNode);
}
}
/**
* 递归后序
* */
void postOrder(Node n) {
if (n != null) {
postOrder(n.leftNode);
postOrder(n.rightNode);
System.out.print(n.value + " ");
}
}
}
测试类
package BinaryTree;
public class Test {
public static void main(String[] args) {
// 二叉树的值,此处是先序表示,$代表节点空值
String value="abc$$de$g$$f$$$";
BinaryTree tree=new BinaryTree(value.toCharArray());
tree.createBinaryTree(tree.root);
System.out.println("先序遍历打印输出");
tree.preOrder(tree.root);
System.out.println();
System.out.println("中序遍历打印输出");
tree.inOrder(tree.root);
System.out.println();
System.out.println("后序遍历打印输出");
tree.postOrder(tree.root);
}
}