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

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

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

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

但是对某些数学问题,就一定要学会用递归去解决。
#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
程序员升职记第28关三排序代码使用ADB命令卸载安卓设备上的应用centos7部署springboot jar包网上赚钱的门路方法,大部分人都是利用这三种方法!每周计划思维导图模板mac解决Enter passphrase for key每次输入密码PHP 先返回结果到前端,PHP代码继续执行后续的任务MariaDB数据库用户创建/删除及权限授权/撤回Docker容器和镜像的导入、导出天猫等网店要挟用户成风?要硬钢!别惯他们臭毛病