zoukankan      html  css  js  c++  java
  • 作业

    #include<iostream>
    using namespace std;
    struct Node
    {
    	char data;
    	Node *l,*r;
    };
    int get(int x)
    {
    	return (x+1)/2;
    }
    void build(Node *t,int l,int r)
    {
    	
    //	char c;
    	cout<<"请输入所在节点的元素 若为空 则输入'#':";
    	cin>>t->data;
    	if(l==r) 
    	{
    		t->l=NULL;
    		t->r=NULL;
    		return ;
    	}
    	t->l=new (Node);
    	build(t->l,l,(l+r)/2);
    	t->r=new (Node);
    	build(t->r,(l+r)/2+1,r);
    }
    void Traq(Node *t)
    {
    	cout<<t->data<<" ";
    	if(t->l)
    		Traq(t->l);
    	if(t->r)
    		Traq(t->r);
    }
    void Traz(Node *t)
    {
    	if(t->l)
    		Traz(t->l);
    	cout<<t->data<<" ";	
    	if(t->r)
    		Traz(t->r);
    }
    void Trah(Node *t)
    {
    	if(t->l)
    		Trah(t->l);
    	if(t->r)
    		Trah(t->r);
    	cout<<t->data<<" ";	
    }
    int FNd(Node *t)
    {
    	if(t->data=='#') return 0;
    	if(t->l==NULL&&t->r==NULL)
    		return 1;
    	return FNd(t->l)+FNd(t->r)+1;
    }
    int max(int x,int y)
    {
    	if(x>y) return x;
    	return y;
    }
    int FH(Node *t)
    {
    	if(t->data=='#')
    		return 0;
    	if(t->l==NULL&&t->r==NULL)
    		return 1;
    	return  max(FH(t->l),FH(t->r))+1;
    }
    void frr(Node *t)
    {
    	if(t->l==NULL&&t->r==NULL)
    	{
    		free(t);
    		return ;
    	}
    	frr(t->l);
    	frr(t->r);
    	free(t);
    }
    int main()
    {
    	int cas,n,x;
    	Node *root;
    	root=new (Node);
    	cout<<"0:结束操作"<<endl;
    	cout<<"1:建树"<<endl;
    	cout<<"2:前序列遍历树"<<endl;
    	cout<<"3:中序列遍历树"<<endl;
    	cout<<"4:后序列遍历树"<<endl;
    	cout<<"5:求二叉树的节点数(有具体元素的节点)"<<endl;
    	cout<<"6:求二叉树的高度(有具体元素的)"<<endl;
    	while(cin>>cas)
    	{
    		if(cas==0) break;
    		switch(cas){
    		case 1:cout<<"请输入所建二叉树所在满二叉树有多少节点";cin>>x;n=get(x);build(root,1,n);break;
            case 2:cout<<"前序遍历结果为:";Traq(root);cout<<endl;break;
    		case 3:cout<<"中序遍历结果为:";Traz(root);cout<<endl;break;
    		case 4:cout<<"后序遍历结果为:";Trah(root);cout<<endl;break;
    		case 5:cout<<"有"<<FNd(root)<<"个节点"<<endl;break;
    		case 6:cout<<"高度为"<<FH(root)<<endl;break;
    		}
    	}
    	frr(root);
    	return 0;
    }
    
    
    
  • 相关阅读:
    node lesson2
    二级联动(list对象中存list对象)
    Spring的注解@Qualifier注解
    @Service(value = "aaaa") 和@Service( "a")的区别
    oracle分页
    Oracle数据导入导出imp/exp
    oracle截取某个字符前面的字符串
    oracle中截取某个字符前面和后面的值
    解决Eclipse启动报错Failed to create the Java Virtual Machine
    成功秘诀就是拿出勇气和坚定的信念去做自己喜欢并且擅长的事情
  • 原文地址:https://www.cnblogs.com/zhangdashuai/p/3757720.html
Copyright © 2011-2022 走看看