数据结构作业之二叉树左右子树交换+二叉树高度计算(写的不好还请大家多多指点)

数据结构作业之二叉树左右子树交换+二叉树高度计算(写的不好还请大家多多指点)

// 数据结构作业之二叉树左右子树交换+二叉树高度计算
// 学生:abilitytao 指导老师:Mr ZHANGHONG
// 时间:2009年3月17日17:54:33
#include < iostream >
using   namespace  std;

struct  node {
    
int data;
    node 
*lchild;
    node 
*rchild;
}
;

void  preorder(node  * p)
{

    
if(p!=NULL)
    
{
        
        cout
<<p->data;
        preorder(p
->lchild);
        preorder(p
->rchild);
    }

}

void  inorder(node  * p)
{
    
if(p==NULL)
        
return ;
    inorder(p
->lchild);
    cout
<<p->data;
    inorder(p
->rchild);
    
}

void  CreatTree(node  *& p)
{

    
int temp;
    cin
>>temp;
    
if(temp==0)
    
{
        p
=NULL;
        
return;
    }


    p
=new node;
    p
->data=temp;
    CreatTree(p
->lchild);
    CreatTree(p
->rchild);
}

void  change(node  * p)
{

    
if(p==NULL)
        
return;
    node 
*temp;
    temp
=p->lchild;
    p
->lchild=p->rchild;
    p
->rchild=temp;
    change(p
->lchild);
    change(p
->rchild);
}


int  count(node  * p) // 用递归的方法计算树高
{
    
if(p==NULL)
        
return 0;
    
int lhigh=count(p->lchild);
    
int rhigh=count(p->rchild);
    
if(lhigh>=rhigh)
        
return lhigh+1;
    
else
        
return rhigh+1;
}
// 问:可以用全局变量计算树高么?

/**/ /*int count(node *p)
{
if(p==NULL)
return 0;
else if(count(p->lchild)>=count(p->rchild))
return count(p->lchild)+1;
else count(p->rchild)+1;
}
*/
// 错误版树高计算程序 问:到底哪错了???个人感觉是递归上出问题了。。。



/**/ ///////////////////////////以下为测试/////////////////////////////
int  main ()
{

    node 
*tree;
    CreatTree(tree);
    cout
<<"此二叉树的高度为:"<<count(tree)<<endl;
system(
"pause");
return 0;
}

/**/ //////////////////////////////////////////////////////////////////////////

你可能感兴趣的:(数据结构作业之二叉树左右子树交换+二叉树高度计算(写的不好还请大家多多指点))