Java按先根序列建立二叉树并遍历二叉树

Java按先根序列建立二叉树并遍历二叉树

例题:

1.算法按先根序序列建立二叉树的二叉链表算法,按下列顺序读入字符: ABC##DE#G##F###

( 1 )从键盘输入二叉树的结点信息,建立二叉树的存储结构;

( 2 )在建立二叉树的过程中按照二叉树先序方式建立。

2.依次使用二叉树的先根次序、中根次序、后跟次序遍历二叉树

代码示例:


import java.util.Scanner;

public class Bnodept { //定义二叉树的存储结构
	char data;
	Bnodept lchild,rchild;
	public Bnodept() {
	}
	public Bnodept(char data) {
		this.data=data;
		this.lchild=null;
		this.rchild=null;
	}
	public Bnodept(char data,Bnodept lchild,Bnodept rchild) {
		this.data=data;
		this.lchild=lchild;
		this.rchild=rchild;
	}
	Bnodept crt_bt_pre() { //先根序序列建立二叉树
		char ch;
		Bnodept bt;
		System.out.println("从键盘输入一个字符:"); 
		Scanner in=new Scanner(System.in);
		String s1=in.nextLine();
		ch=s1.charAt(0); //从键盘输入一个字符
		if(ch=='#') { //'#'作为结束标志
			return null;
		}
		else {
			bt=new Bnodept(); //产生新结点
			bt.data=ch;
			bt.lchild=crt_bt_pre();
			bt.rchild=crt_bt_pre();
			return(bt);
		}
	}
	static void preorder(Bnodept bt) { //先序遍历
		if(bt!=null) { //为非空二叉树
			System.out.print(bt.data+" "); //访问根结点
			preorder(bt.lchild); //先根遍历左子树
			preorder(bt.rchild); //先根遍历右子树
		}
	}
	static void inorder(Bnodept bt) { //中序遍历
		if(bt!=null) {
			inorder(bt.lchild);
			System.out.print(bt.data+" ");
			inorder(bt.rchild);
		}
	}
	static void postorder(Bnodept bt) { //后序遍历
		if(bt!=null) {
			postorder(bt.lchild);
			  postorder(bt.rchild);
			System.out.print(bt.data+" ");
		}
	}

	public static void main(String[] args) {  //测试结果
		Bnodept tree=new Bnodept();
		Bnodept bt=tree.crt_bt_pre();
		System.out.println("先序遍历:");  
		preorder(bt);
	    System.out.println();  
	    System.out.println("中序遍历:");  
	    inorder(bt);
	    System.out.println();  
	    System.out.println("后序遍历:");
	    postorder(bt);	
	}

}

运行截图:

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值