Êý¾Ý½á¹¹¿Î³Ì¿ÎºóϰÌ⼯´ð°¸½âÎö ÏÂÔØ±¾ÎÄ

ΪiºÍj£¨0

½â£ºÓɶþ²æÊ÷˳Ðò´æ´¢½á¹¹Ìص㣬¿ÉµÃµ½ÒÔÏÂÇóÀëiºÍjµÄÁ½¸ö½áµã×î½üµÄ¹«¹²×æÏȽáµãµÄËã·¨£º

ElemType Ancestor(ElemType A[],int i,int j) { }

int p=i,q=j; while (p!=q)

if (p>q) p=p/2; else q=q/2;

return A[p];

£¨2£©ÒÑÖªÒ»¿Ã¶þ²æÊ÷²ÉÓÃ˳Ðò·½Ê½´æ´¢ÔÚÊý×éA[1..n]ÖС£Éè¼ÆÒ»¸öÏÈÐò±éÀúµÄµÝ¹éËã·¨¡£

½â£ºÏÈÐò±éÀúÊ÷ÖнáµãµÄµÝ¹éËã·¨ÈçÏ£º

void PreOrder1(ElemType A[],int i,int n) { }

if (i

if (A[i]!='#') { }

//²»Îª¿Õ½áµãʱ //±éÀú×ó×ÓÊ÷

printf(\ PreOrder1(A,2*i,n);

//·ÃÎʸù½áµã //±éÀúÓÒ×ÓÊ÷

PreOrder1(A,2*i+1,n);

£¨3£©¼ÙÉè¶þ²æÊ÷²ÉÓöþ²æÁ´´æ´¢½á¹¹¡£Éè¼ÆÒ»¸öËã·¨ÇóÒ»¿Ã·Ç¿Õ¶þ²æÊ÷ÖеÄ×î´ó½áµã

Öµ¡£

½â£ºÇóÒ»¸ö¶þ²æÊ÷ÖеÄ×î´ó½áµãÖµµÄµÝ¹éÄ£ÐÍÈçÏ£º

f(bt)=bt->data

Ö»ÓÐÒ»¸ö½áµãʱ

f(bt)=Max{f(bt->lchild),f(bt->rchild),bt->data}

ÆäËûÇé¿ö

¶ÔÓ¦µÄËã·¨ÈçÏ£º

ElemType MaxNode(BTNode *bt) { }

ElemType max,max1,max2;

if (bt->lchild==NULL && bt->rchild==NUL) else { }

max1=MaxNode(bt->lchild); //Çó×ó×ÓÊ÷µÄ×î´ó½áµãÖµ max2=MaxNode(bt->rchild); //ÇóÓÒ×ÓÊ÷µÄ×î´ó½áµãÖµ max=bt->data;

if (max1>max) max=max1; if (max2>max) max=max2; return(max);

//Çó×î´óÖµ //·µ»Ø×î´óÖµ

return bt->data;

£¨4£©¼ÙÉ躬ÓÐn¸ö½áµãµÄ¶þ²æÊ÷²ÉÓöþ²æÁ´´æ´¢½á¹¹¡£Éè¼ÆÒ»¸öËã·¨Êä³öÖÐÐò±éÀúÐòÁÐÖеĵÚk£¨1¡Üi¡Ün£©¸ö½áµãÖµ¡£

Êý¾Ý½á¹¹¼òÃ÷½Ì³Ì

½â£º¶ÔÓ¦µÄËã·¨ÈçÏ£º

int i=0; { }

//iΪȫ¾Ö±äÁ¿

void Trav(BTNode *bt,int k)

if (bt!=NULL) { }

Trav(bt->lchild,k); i++; if (i==k) { }

Trav(bt->rchild,k);

//±éÀúÓÒ×ÓÊ÷

printf(\return;

//±éÀú×ó×ÓÊ÷

£¨5£©¼ÙÉè¶þ²æÊ÷²ÉÓöþ²æÁ´´æ´¢½á¹¹£¬Éè¼ÆÒ»¸öËã·¨Level()Çó¶þ²æÊ÷ÖнáµãֵΪxµÄ½áµãµÄ²ãÊý¡£

½â£º¶ÔÓ¦µÄµÝ¹éËã·¨ÈçÏ£º

int Level(BTNode *bt,ElemType x,int h) //µ÷ÓÃh¶ÔÓ¦µÄʵ²ÎÖóõÖµ1 { }

int l;

if (bt==NULL) else { }

l=Level(bt->lchild,x,h+1); if (l!=0)

return l;

//ÔÚ×ó×ÓÊ÷ÖÐδÕÒµ½,ÔÙÔÚÓÒ×ÓÊ÷ÖвéÕÒ

return(Level(bt->rchild,x,h+1)); else

//ÔÚ×ó×ÓÊ÷ÖвéÕÒ

return 0; return h; else if (bt->data==x)

ÉÏ»úʵÑéÌâ6

¼ÙÉèÒ»¿Ã¶þ²æÊ÷²ÉÓöþ²æÁ´´æ´¢½á¹¹£¬ÆäÖÐËùÓнáµãÖµ¾ù²»Ïàͬ¡£Éè¼ÆÒ»¸öËã·¨Çó´Ó¸ù½áµãµ½ÖµÎªxµÄ½áµãµÄ·¾¶¡£²¢ÓÃÏà¹ØÊý¾Ý½øÐвâÊÔ¡£

½â£º²ÉÓõݹéºÍ²ã´Î±éÀúÁ½ÖÖÇó½â·½·¨£¬¶ÔÓ¦µÄ³ÌÐòÈçÏ£º

#include #include \

void Path1(BTNode *bt,ElemType x,ElemType path[],int pathlen) {

int i; if (bt!=NULL) {

if (bt->data==x)

//ÕÒµ½ÖµÎªxµÄ½áµã

}

void Path2(BTNode *bt,ElemType x) {

BTNode *p;

ElemType path[MaxSize]; int i,d; struct {

BTNode *s; int parent;

//´æ·Å½áµãÖ¸Õë

//´æ·ÅÆäË«Ç×½áµãÔÚquÖеÄϱê //qu´æ·Å¶ÓÖÐÔªËØ

}

{ } else { }

path[pathlen]=bt->data; pathlen++;

//½«µ±Ç°½áµã·ÅÈë·¾¶ÖÐ //pathÖÐÔªËØ¸öÊýÔö1

printf(\´Ó¸ù½áµãµ½%c½áµãµÄ·¾¶: \for (i=0;i

printf(\¡ú\printf(\return;

Path1(bt->lchild,x,path,pathlen); Path1(bt->rchild,x,path,pathlen);

//µÝ¹é±éÀú×ó×ÓÊ÷ //µÝ¹é±éÀúÓÒ×ÓÊ÷

} qu[MaxSize]; rear++; qu[rear].s=bt;

int front=-1,rear=-1;

//¶ÓÍ·¶ÓβָÕë

//¸ù½áµã½ø¶Ó

//¸ù½áµãûÓÐË«Ç×,ÆäparentÖÃΪ-1 //¶Ó²»¿ÕÑ­»·

//³ö¶ÓÒ»¸ö½áµã*p,ËüÔÚquÖеÄϱêΪfront //ÕÒµ½ÖµÎªxµÄ½áµã

qu[rear].parent=-1; while (front!=rear) {

front++; p=qu[front].s; { }

if (p->data==x)

printf(\´Ó¸ù½áµãµ½%c½áµãµÄ·¾¶: \d=0; path[d]=p->data; i=qu[front].parent; while (i!=-1) { }

printf(\for (i=d-1;i>=0;i--)

printf(\¡ú%c\printf(\

//*pÓÐ×óº¢×Ó,½«×óº¢×Ó½ø¶Ó

d++; path[d]=qu[i].s->data; i=qu[i].parent;

if (p->lchild!=NULL)

Êý¾Ý½á¹¹¼òÃ÷½Ì³Ì

} void main() { }

BTNode *bt;

ElemType path[MaxSize],x='I';

CreateBTree(bt,\printf(\½â·¨1:\\n\Path1(bt,x,path,0); printf(\½â·¨2:\\n\Path2(bt,x);

//½¨Á¢Í¼6.14µÄ¶þ²æÁ´

printf(\À¨ºÅ±íʾ·¨:\ }

{ }

if (p->rchild!=NULL) { }

rear++;

qu[rear].s=p->rchild;

qu[rear].parent=front; //ÓÒº¢×ÓµÄË«Ç×Ϊqu[front]½áµã

//*pÓÐÓÒº¢×Ó,½«ÓÒº¢×Ó½ø¶Ó

rear++;

qu[rear].s=p->lchild;

qu[rear].parent=front; //×óº¢×ÓµÄË«Ç×Ϊqu[front]½áµã

Á·Ï°Ìâ7

1. µ¥ÏîÑ¡ÔñÌâ

£¨1£©ÔÚÒ»¸öͼÖУ¬ËùÓж¥µãµÄ¶ÈÊýÖ®ºÍµÈÓÚͼµÄ±ßÊýµÄ£¨ £©±¶¡£ A.1/2 B.1 C.2 D.4 ´ð£ºC

£¨2£©ÔÚÒ»¸öÓÐÏòͼÖУ¬ËùÓж¥µãµÄÈë¶ÈÖ®ºÍµÈÓÚËùÓж¥µãµÄ³ö¶ÈÖ®ºÍµÄ£¨ £©±¶¡£ A.1/2 B.1 C.2 D.4 ´ð£ºB

£¨3£©ÓÐ8¸ö¶¥µãµÄÎÞÏòͼ×î¶àÓУ¨ £©Ìõ±ß¡£ A.14 B.28 C.56 D.112 ´ð£ºB

£¨4£©ÓÐ8¸ö¶¥µãµÄÎÞÏòÁ¬Í¨Í¼×îÉÙÓУ¨ £©Ìõ±ß¡£ A.5 B.6 C.7 D.8 ´ð£ºC

£¨5£©ÓÐ8¸ö¶¥µãµÄÓÐÏòÍêȫͼÓУ¨ £©Ìõ±ß¡£