java二叉树创建以及遍历

学校发的数据结构书还不错,伪代码但是靠谱。最近要用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());
}

}


}

总结:不会地方:递归创建时:1,不知道数据怎么传,传哪里?对二叉树理解不够还有对递归使用太少。

                                                         2,左右孩子创建由于是private也不会传,不会写。

                        不会调试,不会善于使用debug,

差一点真的差好多!希望谨记




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值