基于二叉链表的二叉树高度的计算

描述
设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写递归算法计算二叉树的高度。

输入

多组数据。每组数据一行,为二叉树的前序序列(序列中元素为‘0’时,表示该结点为空)。当输入只有一个“0”时,输入结束。

输出

每组数据分别输出一行,为二叉树的高度。

输入样例 1 

abcd00e00f00ig00h00
abd00e00cf00g00
0

输出样例 1

4
3
#include <iostream>
using namespace std;

int maxi=0;int m=0,n=0;

typedef struct BiTNode
{
	char data;
	struct BiTNode *lchild,*rchild;	
}BiTNode,*BiTree;BiTree temp;

void CreateBiTree(BiTree &T)
{
	char ch;
	cin>>ch;
	if(ch=='0')T=NULL;
	else
	{
		T=new BiTNode;
		T->data=ch;
		CreateBiTree(T->lchild);
		CreateBiTree(T->rchild); 
	}
}

void CreateBiTree(BiTree &T,char ch)
{
	if(ch=='0')T=NULL;
	else
	{
		T=new BiTNode;
		T->data=ch;
		CreateBiTree(T->lchild);
		CreateBiTree(T->rchild); 
	}
}

int Traverse(BiTree T)
{
	if(T)
	{	
		m++;
		if(m>maxi)
		{
			maxi=m;
			temp=T;
		}
	//	cout<<T->data<<":"<<m<<endl; 
		Traverse(T->lchild);
		Traverse(T->rchild);
		m--;	
	}
}

int LonPath(BiTree T,char path[],int pathlen)
{
	int i;
	if(T!=NULL)
	{	
		if(T->lchild==NULL && T->rchild==NULL&&T==temp)
		{
			//cout<<" "<<T->data<<"到根结点路径:"; 
			for(i=0;i<=pathlen-1;i++)
				cout<<path[i];
			cout<<T->data<<endl;
		}
		else
		{
			path[pathlen]=T->data;
			pathlen++;
			LonPath(T->lchild,path,pathlen);
			LonPath(T->rchild,path,pathlen);
			pathlen--;
		}
	}
}

int main()
{
	while(1)
	{
		char ch;char path[100];int pathlen=0;
		cin>>ch;
		if(ch=='0')break;
		BiTree T;
		CreateBiTree(T,ch);
		Traverse(T);
		cout<<maxi<<endl;
		//LonPath(T,path,pathlen);
		maxi=0;m=0;
	}
	return 0;
}

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 基于二叉链表存储结构的二叉树计算系统是一种利用二叉树数据结构实现的计算系统。该系统可以通过二叉树的遍历算法来实现各种计算操作,包括加减乘除、求幂、求根号等。在该系统中,每个节点都可以表示一个操作符或操作数,而二叉树的结构则可以表示操作符之间的优先级关系。通过遍历二叉树,可以按照正确的顺序执行各种计算操作,从而得到正确的结果。该系统具有简单、高效、易于扩展等优点,可以广泛应用于各种计算场景中。 ### 回答2: 二叉链表是一种二叉树的存储结构,它使用指针将每个节点与其父节点、左子节点和右子节点连接起来。基于二叉链表二叉树计算系统利用二叉树的特点,实现数学表达式的计算,能处理各种数学运算和优先级,是计算机科学领域中一大重要的算法。 二叉链表可以储存任何二叉树结构,包括储存在二叉树中的各种数学运算。在基于二叉链表存储的二叉树计算系统中,每个节点都可以储存一个操作符或操作数,实现组个可以被计算的表达式。二叉链表的左子节点和右子节点在这里表示操作符的左右操作数,这样可以简单地将运算符和操作数组织起来,快速构建出计算表达式。 基于二叉链表二叉树计算系统,也可以采用后缀表达式来简化运算和计算表达式。后缀表达式也称为逆波兰表达式,与传统的中缀表达式不同,它将操作符置于操作数之后。这样,所有的计算都可以直接按照后缀表达式中的顺序进行,大大简化了计算的算法。 综合来看,基于二叉链表二叉树计算系统可以将数学表达式快速转换为二叉树结构,通过二叉链表连接各个节点,可以方便地实现各种数学运算,并能够采用后缀表达式简化计算流程。这种基于二叉链表二叉树计算系统,成功地将数据结构和算法相结合,提升了程序运行的效率和算法的可维护性,为计算和数据处理提供了一个高效可靠的解决方案。 ### 回答3: 基于二叉链表存储结构的二叉树计算系统是一种计算机科学中较为常见的数据结构,在数学和计算机科学中有广泛的应用。在这种系统中,二叉树是一种非线性数据结构,其中每个节点最多具有两个子节点。 在二叉链表存储结构中,每个节点都包含了一个指向其左子节点和右子节点的指针。这种结构使得计算系统能够轻松地遍历整个二叉树,并在节点之间传递信息。 在二叉树计算系统中,通过在二叉树上进行遍历,可以实现各种计算任务,如查找最小值、计算二叉树中节点数等。同时,在二叉树中还可以存储表达式,通过遍历二叉树以解析表达式的值。 二叉树计算系统能够完成的任务非常多。其中,最常见的任务之一是查找二叉树上最小值或最大值。这可以通过不断遍历二叉树并寻找最小值/最大值来实现。 此外,二叉树计算系统还可用于实现搜索功能。这种系统能够遍历整个二叉树以查找特定的值。例如,一个计算系统可以在二叉树中查找特定的项,或在表达式中查找特定的运算符。 总之,二叉链表存储结构的二叉树计算系统是一种功能强大的数据结构,具备高效、灵活等特点,在计算机科学和数学中有着广泛的应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值