class Tree{
public Tree leftNode;//左节点
public Tree rightNode;//右节点
public int rootNode;//根节点
public Tree(int rootNode) {
this.rootNode = rootNode;
}
//向二叉树中插入节点
public void insertNode(Tree tree,int rootNode){
if (rootNode > tree.rootNode) {
if (tree.rightNode == null) {
tree.rightNode = new Tree(rootNode);
}else {
insertNode(tree.rightNode,rootNode);
}
}else {
if (tree.leftNode == null) {
tree.leftNode = new Tree(rootNode);
}else {
insertNode(tree.leftNode,rootNode);
}
}
}
}
1、先根遍历
public static void preRoot(Tree tree){
if (tree != null) {
System.out.println(tree.rootNode);
preRoot(tree.leftNode);
preRoot(tree.rightNode);
}
}
2、中根遍历
public static void midRoot(Tree tree){
if (tree != null) {
midRoot(tree.leftNode);
System.out.println(tree.rootNode);
midRoot(tree.rightNode);
}
}
3、//后根遍历
public static void posRoot(Tree tree){
if (tree != null) {
posRoot(tree.leftNode);
posRoot(tree.rightNode);
System.out.println(tree.rootNode);
}
}
4、//层次遍历
public static void level(Tree tree){
if (tree != null) {
List<Tree> list = new ArrayList<Tree>();
list.add(tree);
while (!list.isEmpty()) {
Tree t = list.remove(0);
System.out.println(t.rootNode);
if (t.leftNode!=null) {
list.add(t.leftNode);
}
if (t.rightNode != null) {
list.add(t.rightNode);
}
}
}
}