#include <iostream>
using namespace std;
int maxlen = 0;
int minlen = 65535;
bool isBalance(int maxl, int minl)
{
return (maxl - minl > 1);
}
int findMin(char* s, int len, int cur, int n)
{
if (s[cur] == '\0' || cur > len)
{
return n - 1;
}
else
{
int left = findMin(s, len, cur * 2, n + 1);
int right = findMin(s, len, cur * 2 + 1, n + 1);
return (left < right)? left : right;
}
}
int findMax(char* s, int len, int cur, int n)
{
if (s[cur] == '\0' || cur > len)
{
return n - 1;
}
else
{
int left = findMax(s, len, cur * 2, n + 1);
int right = findMax(s, len, cur * 2 + 1, n + 1);
return (left > right)? left : right;
}
}
// int findMin(char* s, int len, int cur, int n)
// {
// if (s[cur] == '\0' || cur > len)
// {
// return n - 1;
// }
// else
// {
// left = findMax(s, len, cur * 2, n + 1);
// right = findMax(s, len, cur * 2 + 1, n + 1);
// return (left > right)? right : left;
// }
// }
int main(void)
{
int n, len;
//char src[] = {'\0', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', '\0', 'j', '\0', '\0', '\0', 'k', 'l'};
char src[] = {'\0', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', '\0', 'j', '\0', '\0', '\0', 'k'};
len = sizeof(src)/sizeof(char) - 1;
cout<<isBalance(findMax(src, len, 1, 0), findMin(src, len, 1, 0))<<endl;
return 0;
}
// #include <iostream>
// #include <cstring>
// #include <cmath>
// using namespace std;
//
// const int maxn = 100;
// struct Node{
// int key;
// Node *lchild, *rchild, *parent;
// };
// Node *head, *p, node[maxn];
// int cnt;
//
// void init(){
// head = p = NULL;
// memset(node, '\0', sizeof(node));
// cnt = 0;
// }
// void insert(Node* &head, int x){
// if(head == NULL){
// node[cnt].key = x;
// node[cnt].parent = p;
// head = &node[cnt++];
// return;
// }
// p = head;
// if(x < head->key)
// insert(head->lchild, x);
// else
// insert(head->rchild, x);
// }
// int d = 0, num = 0, dep[maxn];
// void getDepth(Node *head){
// if(head == NULL) return;
// ++d;
// getDepth(head->lchild);
// if(head->lchild == NULL && head->rchild == NULL)
// dep[num++] = d;
// getDepth(head->rchild);
// --d;
// }
// // void getDepth(Node *head){
// // if(head == NULL) return;
// // ++d;
// //
// // if(head->lchild == NULL && head->rchild == NULL)
// // {
// // dep[num++] = d;
// // d--;
// // return;
// // }
// // getDepth(head->lchild);
// // getDepth(head->rchild);
// // d--;
// // }
// bool isBalance(Node *head){
// if(head == NULL) return true;
// getDepth(head);
// int max = dep[0], min = dep[0];
// for(int i=0; i<num; ++i){
// if(dep[i]>max) max = dep[i];
// if(dep[i]<min) min = dep[i];
// }
// if(max-min > 1) return false;
// else return true;
// }
// int main(){
// init();
// int a[] = {
// 5, 3, 8, 1, 4, 7, 10, 2, 6, 9, 11, 12
// };
// for(int i=0; i<12; ++i)
// insert(head, a[i]);
// cout<<isBalance(head)<<endl;
// return 0;
// }
Q4.1
最新推荐文章于 2024-04-20 14:15:44 发布