栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

二叉树的构造及求解二叉树高度

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

二叉树的构造及求解二叉树高度

二叉树的构造及求解二叉树高度
// 
题目描述
1、参考题目解释构造一棵二叉树;
2、求解二叉树的高度

输入
A(B(D,E),C(,F))
输出
二叉树高度为: 3

样例输入 Copy
A(B(E,C(D(F(,G),,),)
样例输出 Copy
二叉树高度为: 6

C++代码:

//
#include 
#include 
#define MaxSize 100
using namespace std;

typedef char ElemType;
typedef struct node{
    ElemType data;
    struct node *lchild;
    struct node *rchild;
}BTNode;

//创建二叉树
void CreateBTree(BTNode *&b, char *str){
    BTNode *St[MaxSize], *p;
    int top = -1, k, j=0;
    char ch;
    b = NULL;
    ch = str[j];
    while(ch != ''){
        switch(ch){
        case '(' :
            top++;
            St[top] = p;
            k = 1;
            break;
        case ')':
            top--;
            break;
        case ',':
            k = 2;
            break;
        default:
            p = (BTNode *)malloc(sizeof(BTNode));
            p->data = ch;
            p->lchild = p->rchild = NULL;

            if(b == NULL){
                b = p;
            }
            else{
                switch(k){
                    case 1:St[top]->lchild = p;
                    break;
                    case 2:St[top]->rchild = p;
                    break;
                }
            }
        }
        j++;
        ch = str[j];
    }
}

//求二叉树的高度
int BTHeight(BTNode *b){
    int lchild, rchild;
    if(b == NULL){
        return(0);
    }
    else{
        lchild = BTHeight(b->lchild);
        rchild = BTHeight(b->rchild);
        return (lchild > rchild)? (lchild + 1):(rchild + 1); 
    }
}

int main(){
    BTNode *b;
    char *p;
    p = (char *)malloc(20*sizeof(char));
    cin>>p;
    CreateBTree(b, p);
    cout<<"二叉树高度为: "<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/396006.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号