分析:本题考察二叉搜索树的建树方法,简单的递归结构。

关于树的算法设计一定要联想到递归,因为树本身就是递归的定义。

而学会把递归改称非递归也是一种必要的技术。

毕竟,递归会造成栈溢出,关于系统底层的程序中不到非不得以最好不要用。

但是对某些数学问题,就一定要学会用递归去解决。
#include <iostream> using namespace std; struct student { int value; struct
student* lchild; struct student* rchild; }; void arraytotree(int a[], int len,
struct student **p) { if (len) { *p = (struct student *)malloc(sizeof(struct
student)); (*p)->value = a[len/2]; arraytotree(a, len/2, &(*p)->lchild);
arraytotree(a+len/2+1, len-len/2-1, &(*p)->rchild); //此处注意a+len/2+1 } else { *p
= NULL; return; } } void display_Tree(struct student **head) { if (*head !=
NULL) { display_Tree(&(*head)->lchild); printf("%d\t",(*head)->value);
display_Tree(&(*head)->rchild); } else return; } int main() { int a[] = {1, 2,
3, 4, 9, 13, 16, 18}; int len = sizeof(a)/sizeof(a[0]); student* root;
arraytotree(a, len, &root); display_Tree(&root); }

 

 

技术
©2020 ioDraw All rights reserved
计算机二级python综合应用题(三)【C语言】乘法表面试简历上的项目经验前端实习生必看(前端实习需要达到什么水平)STM32 RS485 modbus通讯源程序,亲测有效JavaScript学习(作用域)《程序是怎么跑起来的》第十一章 硬件控制方法用户登录界面原型图消息称华为招聘半导体设备人才 网友:光刻机是刚需react后台管理配置路由及侧边栏: