堆
堆:最早出现在操作系统中,实现对任务或进程的调度。并不是按照任务队列简单地执行FIFO,而是按照一定的优先级调用,这种特殊的队列就是“优先队列”。
二叉树
二叉树是一种特殊的树型结构。
int x,y,t;r
void main(){
cin>>x>>y;
if (x<y){t=x;x=y;y=t;}
while((ln(x)/ln(2))>(ln(y)/ln(2))) x=x/2;
while(x<>y){
x=x/2;y=y/2;
}
cout<<x<<endl;
}
1、输入树的节点数n和一个邻接矩阵(a[i,j]=1表示j是i的孩子,且根节点编号为1),输出它的先序遍历(后序遍历)结果。
procedure dfs(i); //主程序调用dfs(1);
var j:integer;
begin
wirte(i:6); //先序
for j:=1 to n do
if a[i,j]=1 then dfs(j);
end;
2、入树的节点数n和一个邻接矩阵(a[i,j]=1表示j是i的孩子,且根节点编号为1),再输入2个节点编号,输出他们的最近公共祖先节点编号。
procedure search(j); //主程序初始化w:=0;调用search(p)把其祖先存入b数组;
var i:integer;
begin
while j>1 do
begin
for i:=1 to n do
if a[i,j]=1 then begin w:=w+1;farther[w]:=i;break;end;
j:=i;
end;
end;