有序数组转化为二叉树 C++
来源:互联网 发布:腾讯企业邮箱的域名 编辑:程序博客网 时间:2024/04/27 10:01
http://blog.csdn.net/fanzitao/article/details/8031946
这个题目有点模棱两可,只说转化成二叉树。也没有说平衡二叉树,二叉排序树。
如果只是随便什么二叉树都可以,把就用数组作为输出,随便是前序,中序,还是后续构建二叉树都可以,网上二叉树建立的代码一大堆。
下面代码是简历一棵二叉排序树。
首先用数组的中间元素作为根建立二叉树,然后递归简历左子树,右子树。
- #include<iostream>
- #include<queue>
- #include<windows.h>
- using namespace std;
- typedef struct node{
- int data;
- struct node *left;
- struct node *right;
- }Node,*Bitree;
- void buildTree(Bitree &T,int a[],int begin,int end)//建立二叉排序树
- {
- if(begin>end)//递归的出口
- return;
- int mid = (begin+end)/2;//中间元素的下标
- if(T==NULL)//为当前树的根节点申请空间
- {
- T = (Node *)malloc(sizeof(Node));
- T->data = a[mid];//赋值
- T->left = NULL;//左右子树也要置为NULL
- T->right = NULL;
- }
- cout<<a[mid]<<" ";//下面2行为了方便看建立的过程
- Sleep(1000);
- buildTree(T->left,a,begin,mid-1);//递归简历左子树
- buildTree(T->right,a,mid+1,end);//递归建立右子树
- }
- void travel(Bitree T)
- {
- if(T != NULL)
- {
- travel(T->left);
- cout<<T->data<<" ";//中序遍历
- travel(T->right);
- }
- }
- int main()
- {
- int a[] = {1,2,3,4,5,6,7,8,9};
- Bitree root = NULL;
- int begin = 0, end = 8;
- buildTree(root,a,begin,end);
- cout<<endl;
- travel(root);
- getchar();
- return 0;
- }
0 0
- 将有序数组转化为二叉树
- 有序数组转化为二叉树
- 有序数组转化为二叉树 C++
- [leetcode]Convert Sorted Array to Binary Search Tree (有序数组转化为二叉搜索树 C语言)
- 数组转化为二叉树
- C语言 将二叉树转化为数组
- 有序数组转换为平衡二叉树
- 二叉搜索树转化为有序双向链表
- 将有序表转化为二叉搜索树
- 二叉搜索树转化为有序双向链表
- 将有序单链表转化为平衡二叉树
- LeetCode OJ 之 Convert Sorted Array to Binary Search Tree(把有序数组转化为二叉搜索树)
- 把数组转化为二叉树
- java 将数组转化为 二叉树
- 将有序数组转换为平衡二叉搜索树
- 有序数组转换为平衡二叉搜索树
- 有序数组转换为平衡二叉树(BST)
- 将有序数组转换为平衡二叉搜索树
- Leetcode NO.219 Contains Duplicate II
- LeetCode Binary Search Tree Iterator
- 9.10学习总结
- android常见错误之 No resource found that matches the given name
- Leetcode NO.220 Contains Duplicate III
- 有序数组转化为二叉树 C++
- 11g之前 修改主机名后如何启动使用ASM存储的数据库
- Unity5内部渲染的优化3:移除固定功能
- 遍历二叉树的各种操作(非递归遍历) C++
- Leetcode: Read N Characters Given Read4
- LeetCode Binary Tree Maximum Path Sum
- PHP-C函数读取配置信息
- PHP-P函数打印数据
- AndroidManifest.xml文件的作用和简单使用