学校发的数据结构书还不错,伪代码但是靠谱。最近要用java实现二叉树创建和遍历。不太喜欢那些网上代码。所以就自己结合书结合网上再结合一个人类的一点修改成功啦,细节很重要啊,差一点就是差很多。
实验要求:
1. 递归创建一棵二叉树;
2. 自定义一个Stack,实现二叉树的前序非递归遍历;
3. 实现二叉树的前序、中序递归遍历我只实现了创建和递归遍历。(1)
package BinaryTree;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
BinaryTree bint=new BinaryTree();
Treenode node=new Treenode();
Treenode node1;
System.out.println("请开始输入二叉树节点,输入0结束");
Scanner scan=new Scanner(System.in);
node1=bint.createbinarytree(node,scan);
System.out.println("output : The Binary tree node:");
bint.preoder(node1);
}
}
package BinaryTree;
import java.util.Scanner;
public class Treenode {
private String data=null;
private Treenode lchild;
private Treenode rchild;
public Treenode(String data) {
this.data = data;
}
public Treenode() {
}
public Treenode(String data, Treenode lchild, Treenode rchild) {
this.data = data;
this.lchild = lchild;
this.rchild = rchild;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public Treenode getLchild() {
return lchild;
}
public Treenode setLchild(Treenode lchild) {
return this.lchild = lchild;
}
public Treenode getRchild() {
return rchild;
}
public Treenode setRchild(Treenode rchild) {
return this.rchild = rchild;
}
}
package BinaryTree;
import java.util.Scanner;
public class BinaryTree {
public static void main(String[] args) {
}
public Treenode createbinarytree(Treenode node,Scanner scan) {
String tmp=scan.next();
if (tmp.equals("0")) //原为scan.next().equals(''0'')×
{
node = null;
}
else
{
node = new Treenode(tmp);
{
node.setLchild(createbinarytree(node.getLchild(), scan));
node.setRchild(createbinarytree(node.getRchild(),scan));
}
}
return node;
}
public void preoder(Treenode node) {
if (node!=null)
{
preoder(node.getLchild());
System.out.println( node.getData());
preoder(node.getRchild());
}
}
}
2,左右孩子创建由于是private也不会传,不会写。
不会调试,不会善于使用debug,
差一点真的差好多!希望谨记