完全二叉树的性质:
- 在完全二叉树的第n层最多有2的n-1次方个结点。
2.深度为n的完全二叉树最多有2的n-1次方个结点,最少有2n个节点。
3.叶子结点数为,度为2的结点数为,则=+1。
4.当完全二叉树的结点有n个时,深度为log n+1;
5.完全二叉树的编号:
(1)完全二叉树中任何一层最左的节点编号n,则其左子树为2n,右子树为2n+1.
(2)完全二叉树中任一节点编号n,则其左子树为2n,右子树为2n+1.
先序 abcd
中序 bacd
题目答案
D
二进制加法满二进一
题目答案
D
链表存储单元地址连续或者不连续都可以
题目答案
D
时间复杂度算法
#include<iostream>
using namespace std;
const int dayNum[]={-1,31,28,31,30,31,30,31,31,30,31,30,31};
int m, offset, i;
int main()
{
cin >> m;
cout <<"S M T W T F S"<<endl;//' '为tab制表符
①;
for (i = 1; i < m; i++)
offset = ②;
for (i = 0; i < offset; i++)
cout <<' ';
for (i = 1; i <= ③;i++)
{
cout << ④;
if(i==dayNum[m]||⑤==0)
cout << endl;
else
cout << ' ';
}
return 0;
}
offset是偏移值,先设置偏移值,然后一个一个加能算出需要月的偏移值,第五个是判断是否需要换行
#include <iostream>
using namespace std;
const int MAXN = 1000;
int n,i,lbound,rbound,mid,m,count;
int x[MAXN];
int main()
{
cin >> n >> m;
for(i = 0; i < n; i++)
cin >> x[i];
lbound = 0;rbound = m;
while(①) {
mid=(lbound+rbound)/2;
②;
for(i = 0; i < n; i++)
{
if(③)
④;
}
if(count > n/2)
lbound = mid + 1;
else
⑤;
}
cout << rbound << endl;
return 0;
}
先二分答案,再遍历整个数组验证。第一空是二分的条件,所以应该为lbound<rbound。第二空应该是将计数器count初始化操作,第三空、第四空就对应着统计大于(或小于)mid的数值个数的条件与过程,第五空则是调整右边界,可以参照左边界的调整方法仿写为rbound=mid