java建树_二叉树建树与前后续遍历(Java版)

该博客介绍了如何使用Java创建二叉树并进行前序和后序遍历。通过`Getchar`类获取输入,`Stack`类辅助遍历,以及`BinTRee`类实现节点操作。在`BinTRee`类中,定义了创建二叉树的方法`CreateBtree`,前序遍历`pre`和后序遍历`post`的方法。
摘要由CSDN通过智能技术生成

class Tree_1 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.println("Please Create The Bin_TRee:\t");

String s = sc.nextLine();

Getchar getchar = new Getchar(s);

BinTRee b = new BinTRee('0');

BinTRee d = b.CreateBtree(getchar);

d.pre();

System.out.println();

d.post();

sc.close();

}

}

class Getchar {

private String data;

private int pos = 0;

public Getchar(String data) {

this.data = data;

}

public char getChar() {

int i = pos;

pos++;

return data.charAt(i);

}

}

class Stack {

BinTRee[] btree = new BinTRee[20];

int top = 0;

boolean isEmpty() {

return top == 0;

}

public void push(BinTRee t) {

btree[top] = t;

top++;

}

public BinTRee pop() {

top--;

return btree[top];

}

public BinTRee top() {

return btree[top - 1];

}

}

class BinTRee {

char value;

BinTRee L, R;

int flag = 0;

public BinTRee(char value) {

this.value = value;

}

public void pre() {

System.out.print(value + " ");

if (this.L != null)

L.pre();

if (this.R != null)

R.pre();

}

public BinTRee CreateBtree(Getchar b) {

char x = b.getChar();

if (x == '#')

return null;

BinTRee t = new BinTRee(x);

t.L = CreateBtree(b);

t.R = CreateBtree(b);

return t;

}

public void post() {

BinTRee t = this;

Stack stack = new Stack();

stack.push(t);

for (; !stack.isEmpty();) {

t = stack.top();

if (t == null) {

stack.pop();

} else {

if (t.flag == 0) {

stack.push(t.L);

t.flag = 1;

} else if (t.flag == 1) {

stack.push(t.R);

t.flag = 2;

} else if (t.flag == 2) {

System.out.print(t.value + " ");

stack.pop();

}

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值