BST中所有结点之和(设结点个数为n,且中序遍历为等差数列)
来源:互联网 发布:上海网络视听产业基地 编辑:程序博客网 时间:2024/05/22 01:37
其实,就是要求最小值和最大值之和, 程序如下:
#include <iostream>using namespace std;// BST的结点typedef struct node{int key;struct node *lChild, *rChild;}Node, *BST;// 在给定的BST插入element, 使之称为新的BSTbool BSTInsert(Node * &p, int element){if(NULL == p) // 空树{p = new Node;p->key = element;p->lChild = p->rChild = NULL;return true;}if(element == p->key) // BST中不能有相等的值return false;if(element < p->key) // 递归return BSTInsert(p->lChild, element);return BSTInsert(p->rChild, element); // 递归}// 建立BSTvoid createBST(Node * &T, int a[], int n){T = NULL; int i;for(i = 0; i < n; i++){BSTInsert(T, a[i]);}}int minPlusMax(BST T){Node *p = T;while(NULL != T->lChild) // 一路向左狂奔T = T->lChild;while(NULL != p->rChild) // 一路向右狂奔p = p->rChild;return T->key + p->key;}int main(){int a[10] = {4, 5, 2, 1, 0, 9, 3, 7, 6, 8};int n = 10;BST T = NULL;// 并非所有的a[]都能构造出BST,所以,最好对createBST的返回值进行判断createBST(T, a, n);// minPlusMax(T) * n 必然为偶数,所以不同担心截断cout << minPlusMax(T) * n / 2 << endl;return 0;}
- BST中所有结点之和(设结点个数为n,且中序遍历为等差数列)
- n个结点的堆中结点i的子树大小至多为2n/3
- 查找页面中所有类为test的结点
- 求出一个排序二叉树中结点度数为一的结点个数
- 2.2删除带头结点的L中所有值为x的结点
- 【树】判断树是否为BST + 求BST的第k个结点 + 判断一个数组是否为BST的后序遍历
- 若度为m的哈夫曼树中,其叶结点个数为n,则非叶结点的个数为()
- 基于中序遍历找到一个结点的后继结点
- 设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点
- 求二叉树中所有结点的个数
- java:n个数中取出m个数,计算之和为S,求这几个数
- N结点二叉树中M个结点的连通子图个数
- N结点二叉树中M个结点的连通子图个数
- 寻找错误结点 中序遍历
- 求二叉树中结点值的和为指定整数的所有路径
- 打印出二叉树中结点值的和为输入整数的所有路径
- 堆中i结点的子树大小至多为2n/3的证明
- 创建一个结点个数为n的链表,删除指定的元素
- 从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式(三)
- 黑马程序员-基础-IO流1
- Java动态执行可配置的逻辑
- 动态更改JVM里的class
- tar.gz文件的安装
- BST中所有结点之和(设结点个数为n,且中序遍历为等差数列)
- 九度oj1081递推数列的算法
- 通通WPF随笔(3)——艺术二维码素材生成器
- ubuntu下的wireshark编译安装
- cocos2d-x学习之路(8)--重构项目
- 黑马程序员-基础-IO流2
- DIV CSS left right top bottom定位
- ubuntu12.04-64位 装toolchain出错
- Android分享功能