数据结构习题

1.假设二叉树中的每个节点为单个字符,采用二叉链存储设计一个算法findparent,求二叉树b中指定值x的双亲节点。

void findparent(BTNode *b,ElemType x,BTNode *&p) { 
 if (b!=NULL) { 
 if (b->data==x) 
      p=NULL; 
 else if (b->lchild!=NULL && b->lchild->data==x)
  p=b; 
  else if (b->rchild!=NULL && b->rchild->data==x) 
  p=b; 
  else { 
  findparent(b->lchild,x,p);
  if (p==NULL)
    findparent(b->rchild,x,p); 
    }
     } 
     else p=NULL; 
     }

二叉树的主要算法实现都是利用递归,在本题中,首先遍历根节点,之后左节点,右节点,然后左子树,右子树,就可以找到双亲。


2.假设二叉树中的每个节点值为单个字符,采用二叉链的结构存储。设计一个算法,求二叉树b的最小支长。所谓最小最短支长指的是根节点到最近叶子节点的路径长度。

int MinBranch(BTNode *b) {   
int min1 ,min2,min;
 if (b==NULL) return 0; 
 else { 
   if(b->lchild==NULL && b->rchild==NULL)      
   return 0;
    min1=MinBranch(b->lchild);
    min2=MinBranch(b->rchild);
     if(min1<min2) min=min1+1; 
     else
     min=min2+1; returnmin; 
     } 
     }
    ''

你可能感兴趣的:(笔记,算法,图论,深度优先)