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

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

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

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

但是对某些数学问题,就一定要学会用递归去解决。
#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
第十一届蓝桥杯 b组企业网络拓扑图让Mac系统始终不休眠的设置技巧抢红包算法--四种抢红包算法对比深入了解vuex,vuex的五个核心属性转换后台返回的这种时间格式2019-04-24T02:30:00.000+00002020年了,前端还有的搞么?要怎么学?Python类(一)BPMN流程图postman简单教程 - - 增删改查接口测试(超详细)