赞
踩
2022.11.18有一阵没写了,主要原因:中期和生日。
本关任务:给出一棵二叉树的括号表示法,本题要求实现3个函数,根据给出的括号表示法创建该二叉树并输出。输出时,也按二叉树的括号表示法输出。然后再求出二叉树高度并输出。
平台会对你编写的代码进行测试:
开始你的任务吧,祝你成功!
#include "binary_tree.h" //根据嵌套括号表示法的字符串生成链式存储的二叉树 void CreateTree(BTNode* &root, char str[]) { /*请在BEGIN和END之间实现你的代码*/ /*****BEGIN*****/ BTNode* St[60], * p; root = NULL; int top = -1, k, i = 0; //栈顶指针 char ch = str[i]; while (ch != '\0'){ 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 (root == NULL) root = p; else{ k == 1 ? St[top]->lchild = p : St[top]->rchild = p; } } ch = str[++i]; } /******END******/ } //以嵌套括号表示法输出一棵二叉树 void DispTree(BTNode* root) { /*请在BEGIN和END之间实现你的代码*/ /*****BEGIN*****/ if (root != NULL){ printf("%c", root->data); if (root->lchild != NULL || root->rchild != NULL){ printf("("); DispTree(root->lchild); if (root->rchild != NULL) printf(","); DispTree(root->rchild); printf(")"); } } /******END******/ } // 求二叉树的高度 // 参数:二叉树根节点root int getHeight(BTNode* root) { /*请在BEGIN和END之间实现你的代码*/ /*****BEGIN*****/ int lchildh, rchildh; if (root == NULL) return 0; else{ lchildh = getHeight(root->lchild); rchildh = getHeight(root->rchild); return (lchildh > rchildh) ? (lchildh + 1) : (rchildh + 1); } /******END******/ }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。