java数据结构之二叉树

1、二叉树各功能模块介绍

      1.1、创建二叉树

                   二叉树数据输入是广义表输入形式:A(B(C),D(E(F,G),H(,I)))。创建该二叉树使用的是非递归方式。整个流程为:A是根元素,B、D为A的子节点,所以输入A时,把A作为根结点,遇到左括号(证明下一个有效数据输入是A的子树),此时把A压入栈中,接着来的数据是B,此时把A的数据读出来(但是此时A没有弹出栈),把B挂在A的左指针上,再次遇到左括号,此时把B也压入栈中,此时栈内有元素(B A)top指向B,然后输入C,由于C还是B的左子树,所以把B读出,然后把C挂在B上,当遇到右括号后,证明B已经没有右子树了,此时把B弹出堆栈,此时占中只有A元素,A的左子树已经构造完成。当遇到 ‘,’逗号时,表示遍历的右子树,输入D时,把A读出来,把D挂在A上,然后输入左括号,此时把D压入栈中,输入E,此时读出D,把E挂在D上,输入左括号,然后把E压入栈中,输入F,读出E,把F挂在E的左指针上,当遇到‘,’时,把结点标志设为右子树,读到G时,把G挂在E的右指针上,遇到右括号,此时弹出E,然后遇到‘,’ 把结点标志设为右子树,然后把D读出,把H挂在D上,遇到左括号,把H压入栈中,把I挂在H上,把H D A分别弹出。此时完成整个二叉树的构造。该二叉树构造需要用到堆栈,堆栈代码看我上一篇博客,在这里不做累述。二叉树结点代码如下:
package BiTreeTable;

public class BiTreeNode {
	Object element;//结点元素
	BiTreeNode left,right;//左右指针
	public BiTreeNode(Object element){//构造方法
		this.element=element;
	}
	public BiTreeNode(BiTreeNode left,BiTreeNode right,Object element){
		this.left=left;
		this.right=right;
		this.element=element;
	}
}
二叉树的创建代码如下:
	//定义广义二叉树结点       二叉树广义表A(B(C),D(E(F,G),H(,I)))
	public void creatBiTree(String gt) {
		Stack sck=new sequencetStack(); //定义和创建一个保存结点元素的栈
		root = null;
		BiTreeNode p=null;
		int k=1;
		char a[]=gt.toCharArray();
		for(int i=0;i<a.length;i++){
			switch(a[i]){
			case ' ':break;//去除无效空格
			case '(': sck.push(p);//遇到左括号则入栈
			          k=1;//左节点标志
			          break;
			case ')':
				      if(sck.isEmpty()){
				    	  System.out.println(
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值