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

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

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

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

但是对某些数学问题,就一定要学会用递归去解决。
#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); }

 

 

技术
友情链接
码工具
Toolsou
API参考文档
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:766591547
关注微信