#include<stdio.h>
typedef char DataType;
typedef struct BNode
{
DataType _data;
struct BNode _left;
struct BNode
_right;
}BNode;
//ABD##E#H##CF##G##
BNode creatBTree(DataType arr[], int idex)
{
if (arr[idex] == '#')
{
(
idex)++;
return NULL;
}
else
{
//创建以当前数据为根的子树
BNode root = (BNode)malloc(sizeof(BNode));
root->_data = arr[idex];
++(
idex);
root->_left = creatBTree(arr, idex);
root->_right = creatBTree(arr, idex);
return root;
}
}
//前序
void preOrder(BNode root)
{
if (root)
{
printf("%c", root->_data);
preOrder(root->_left);
preOrder(root->_right);
}
}
void inOrder(BNode
root)
{
if (root)
{
inOrder(root->_left);
printf("%c", root->_data);
inOrder(root->_right);
}
}
int bTreeKSize(BNode root, int k)
{
if (root == NULL) return 0;
if (k == 1) return 1;
return bTreeKSize(root->_left, k - 1) +bTreeKSize(root->_right, k - 1);
}
BNode
bTreeFing(BNode root, DataType ch)
{
if (!root) return NULL;
if (root->_data == ch) return root;
BNode
node = bTreeFind(root->_left, ch);
if (node)
return node;
return bTreeFind(root->_right, ch);
}
//销毁,无野指针
void bTreeDestroy(BNode* root)
{
if (
root){
bTreeDestroy(&((root)->_left));
bTreeDestroy(&((
root)->_right));
free(root);
root = NULL;
}
}
//销毁,有野指针
void bTreeDestroy(BNode* root)
{
if (root){
bTreeDestroy(&((root)->_left));
bTreeDestroy(&((root)->_right));
free(root);
root = NULL;
}
}

void test()
{
char arr[] = "ABD##E#H##CF##G##";
int idex = 0;
BNode* root = creatBTree(arr, &idex);
}
int main()
{
test();
return 0;
}

©著作权归作者所有:来自51CTO博客作者赶路人丶的原创作品,如需转载,请注明出处,否则将追究法律责任

每一份赞赏源于懂得

赞赏

0人进行了赞赏支持

更多相关文章

  1. 2021.1.17——指针和结构体的初步认识
  2. PHP如何区分继承链中的$ this指针?
  3. 堆栈/帧指针作为外部变量
  4. 自己实现的C++智能指针的功能代码和测试用例
  5. Android中findViewById()h获取EditText 空指针问题
  6. java--this指针在哪里存着呢?
  7. 填充java fx表时出现空指针异常
  8. Fragment中出现java.lang.NullPointerException 空指针 上下文为
  9. 二维数组空指针异常

随机推荐

  1. Android漫游记(1)---内存映射镜像(memory
  2. Android(安卓)Dialog 全屏
  3. Android基本框架笔记
  4. Android 开发简介-系统架构
  5. android使用文件进行存储
  6. Android 面试题总结之Android 进阶(二)
  7. Android当中的MVP模式(三)基于分页列表的封
  8. Android创始人安迪 罗宾(Andy Rubin)离职
  9. Android(安卓): 自己写个HTTP框架
  10. android textView 技巧 富文本显示 代码