博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
完全二叉树的创建
阅读量:6242 次
发布时间:2019-06-22

本文共 1286 字,大约阅读时间需要 4 分钟。

创建二叉树:输入0结束

void CreateTree(BinaryTree **pTree){    //输入数值    int nNum;    scanf("%d",&nNum);    if(nNum == 0)return;    *pTree = (BinaryTree*)malloc(sizeof(BinaryTree));    (*pTree)->nValue = nNum;    (*pTree)->pLeft = NULL;    (*pTree)->pRight = NULL;    //左    CreateTree(&((*pTree)->pLeft));    //右    CreateTree(&((*pTree)->pRight));}

创建二叉树:输入#结束,需要注意的是%c读入空格和换行,所以输入的时候要一连串输入,

void  CreateTree(Tree** tmp){    char num = 0;    scanf("%c",&num);    if(num == '#') return;    *tmp = (Tree*)malloc(sizeof(Tree));    (*tmp)->val = num - '0';    (*tmp)->pleft = NULL;    (*tmp)->pright = NULL;    CreateTree(&((*tmp)->pleft));    CreateTree(&((*tmp)->pright));}

测试数据:124##5##36###     

前序输出结果为:124536

函数为前序插入,只能为前序插入。因为必须确定根才能,建立左孩子和右孩子

将数组元素作为前序遍历的结果建立二叉树:

根从0开始,第2*i+1个节点为它的左孩子,2*i+2为它的右孩子

Tree* Create(int* arr,int len){    if(arr == NULL || len == 0) return NULL;    Tree* tree = (Tree*)malloc(sizeof(Tree)*len);        for(int i = 0; i < len; i++)    {            tree[i].val = arr[i];        if((2*i+1) < len)            tree[i].pleft = &tree[2*i+1];        else            (tree[i]).pleft = NULL;        if((2*i+2) < len)            tree[i].pright = &tree[2*i+2];        else            tree[i].pright = NULL;    }    return tree;}

 

转载于:https://www.cnblogs.com/Lune-Qiu/p/9028301.html

你可能感兴趣的文章
调频广播六十年
查看>>
android sdk 如何重新生成debug.keystore
查看>>
黑马程序员-JAVA基础-练习之存储学生信息
查看>>
基于FPGA的跨时钟域信号处理——同步设计的重要
查看>>
【SAP HANA】关于SAP HANA中Analytic View创建、激活状况下在系统中生成对象的研究...
查看>>
ubuntu 12.04 ubuntu System program problem detected 解决方法
查看>>
c++智能指针《一》 auto_ptr
查看>>
我的代码观——关于ACM编程风格与librazy网友的对话
查看>>
Linux 总结2
查看>>
mysql C++ 使用
查看>>
android程序监听home键与电源键
查看>>
iOS中使用 Reachability 检测网络
查看>>
现场故障-数据量超出plsql developer结果集导致应用程序无数据现象
查看>>
Android -- sqlite数据库随apk发布
查看>>
JQuery操作表单相关使用总结
查看>>
将markdown格式转化为bootstrap风格html
查看>>
CSS3 Transitions属性打造动画的下载按钮特效
查看>>
eclipse 快捷键
查看>>
js常用的事件对象
查看>>
SharePoint 2013 禁用搜索服务
查看>>