Problem1869--【查找】7-5 平衡二叉树的高度的计算

1869: 【查找】7-5 平衡二叉树的高度的计算

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 1  Solved: 1
[Submit] [Status] [Web Board] [Creator:]

Description

假设一棵平衡二叉树的每个结点都标明了平衡因子b,设计一个算法,求平衡二叉树的高度。

Input

多组数据,每组数据一行,为平衡二叉树的先序序列。输入的数字为该节点的平衡因子。当序列为“#”时,输入结束。

Output

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

Sample Input Copy

110###0##
1110###0##10###
#

Sample Output Copy

3
4

HINT

#include<iostream>
#include <string.h>
using namespace std;
typedef struct BiTNode
{
    char data;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree &T,char S[],int &i)
{//先序建立二叉树
    if(S[i]=='#')
        T=NULL;
    else
    {
        T=new BiTNode;
        T->data=S[i];
        CreateBiTree(T->lchild,S,++i);
        CreateBiTree(T->rchild,S,++i);
    }
}
int Height(BiTree T)
{//求平衡二叉树T的高度
    /**************begin************/
   
    /**************end************/
}
int main()
{
    char S[100];//如果平衡因子b=-1,会被字符数组割裂成'-'和'1',故本题输入样例不包含b=-1
    while(cin>>S)
    {
        if(strcmp(S,"#")==0) break;
        int i=-1;
        BiTree T;
        CreateBiTree(T,S,++i);
        cout<<Height(T)<<endl;
    }
    return 0;
}

Source/Category