给定一个有序数组(递增),构建一棵具有最小高度的二叉树
来源:互联网 发布:淘宝发布类目查询 编辑:程序博客网 时间:2024/04/29 02:08
给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。
想要使构建出来的二叉树高度最小,那么对于任意结点, 它的左子树和右子树的结点数量应该相当。比如,当我们将一个数放在根结点, 那么理想情况是,我们把数组中剩下的数对半分,一半放在根结点的左子树, 另一半放在根结点的右子树。我们可以定义不同的规则来决定这些数怎样对半分, 不过最简单的方法就是取得有序数组中中间那个数,然后把小于它的放在它的左子树, 大于它的放在它的右子树。不断地递归操作即可构造这样一棵最小高度二叉树。
#include <iostream>#include <cstring>#include <cmath>using namespace std;const int maxn = 100;struct Node{ int key; Node *lchild, *rchild, *parent;};Node *p, node[maxn];int cnt;void init(){ p = NULL; memset(node, '\0', sizeof(node)); cnt = 0;}void create_minimal_tree(Node* &head, Node *parent, int a[], int start, int end){ if(start <= end){ int mid = (start + end)>>1; node[cnt].key = a[mid]; node[cnt].parent = parent; head = &node[cnt++]; create_minimal_tree(head->lchild, head, a, start, mid-1); create_minimal_tree(head->rchild, head, a, mid+1, end); }}int height(Node *head){ if(head == NULL) return 0; return max(height(head->lchild), height(head->rchild)) + 1;}int main(){ init(); int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; Node *head = NULL; create_minimal_tree(head, NULL, a, 0, 8); cout<<height(head)<<endl; return 0;}
0 0
- 给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。
- 给定一个有序数组(递增),构建一棵具有最小高度的二叉树
- 给定一个递增有序数组,要求构建一棵具有最小高度的二叉查找树
- (016)给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树(keep it up)
- [Java]给定一个递增有序数组,要求构建一棵具有最小高度的二叉查找树
- 给定有序数组,创建高度最小的二叉查找树
- 给定一个有序的数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉查找树?
- 给定一个有序数组,元素各不相同且升序排列,创建一个高度最小的二叉查找树
- 【Java】给定一个有序整数数组,元素各不相同且按照升序排列,编写一个算法,创建一个高度最小的二叉查找树
- 给定一个有序的链表或者数组,构造一棵二叉搜索树
- Chapter 4 | Trees and Graphs--有序数组构建最小高度的二叉树
- Chapter 4 | Trees and Graphs--有序数组构建最小高度的二叉树
- 程序员面试金典: 9.4树与图 4.3给定一个有序整数数组,元素各不相同且按升序排列,创建一颗高度最小的二叉查找树。
- 程序员面试金典: 9.4树与图 4.3给定一个有序整数数组,元素各不相同且按升序排列,创建一颗高度最小的二叉查找树。 ---快速解法
- Cracking coding interview(4.3)给定一个排好序的数组创建最小高度的二叉树
- 有序数组创建高度最小的二叉查找树
- 给定一个单调递增有序数组A,给定一个数字N,试给出一个算法得到A中该数字N出现的次数。
- 【IT笔试面试题整理】有序数组生成最小高度二叉树
- 在git 中修改之前的提交内容
- 子数组之和
- Unity2D之Sprite动画相关
- UI009---xib的使用
- kill 进程一个简单函数接口
- 给定一个有序数组(递增),构建一棵具有最小高度的二叉树
- 智能心跳设计与简要实现
- 设计模式 状态模式
- 通过URL Scheme传递参数
- 能对齐的数据
- MySQL主从复制基础搭建--之遇到的问题
- 时间管理——永远做重要不紧急的事情
- hdu 1465 不容易系列之一(错排)
- android 自动弹出软键盘,EditText自动获取焦点