输出二叉树中从每个叶子结点到根结点的路径。

题目
输出二叉树中从每个叶子结点到根结点的路径。


相似考题
参考答案和解析
参考答案:采用先序遍历的递归方法,当找到叶子结点*b时,由于*b叶子结点尚未添加到path中,因此在输出路径时还需输出b->data值。
  [算法描述]
  void AllPath(BTNode *b,ElemType path[],int pathlen)
  {int i;
  if (b!=NULL)
  {if (b->lchild==NULL && b->rchild==NULL) //*b为叶子结点
  {cout << " " << b->data << "到根结点路径:" << b->data;
  for (i=pathlen-1;i>=0;i--)
  cout << endl;
  }
  else
  {path[pathlen]=b->data; //将当前结点放入路径中
  pathlen++; //路径长度增1
  AllPath(b->lchild,path,pathlen); //递归扫描左子树
  AllPath(b->rchild,path,pathlen); //递归扫描右子树
  pathlen--; //恢复环境
  }
  }// if (b!=NULL)
  }//算法结束
更多“输出二叉树中从每个叶子结点到根结点的路径。 ”相关问题
  • 第1题:

    1、设二叉树采用二叉链表方式存储,root指向根结点,r所指结点为二叉树中任一给定的结点。则可以通过改写()算法,求出从根结点到结点r之间的路径。

    A.先序遍历

    B.中序遍历

    C.后序遍历

    D.层次遍历


    按层次遍历二叉树用队列存储结点数组A按完全二叉树存储初始化A的各元素都是null。核心语句段如下: QueueIn(Q(bt1)); //二叉树根结点指针和参数1入队列. while(!QueueEmpty(Q)) {qq=QueueDel(Q); p=qq.t;i=qq.i; A[i]=P一>data;last=i; //数据存入数组i是当前最大下标 if(p一>lchild) QueueIn(Q(p一>ichiid2*i)); 按层次遍历二叉树,用队列存储结点,数组A按完全二叉树存储,初始化A的各元素都是null。核心语句段如下:QueueIn(Q,(bt,1));//二叉树根结点指针和参数1入队列.while(!QueueEmpty(Q)){qq=QueueDel(Q);p=qq.t;i=qq.i;A[i]=P一>data;last=i;//数据存入数组,i是当前最大下标if(p一>lchild)QueueIn(Q,(p一>ichiid,2*i));

  • 第2题:

    关键路径是事件结点网络中 。

    A.从源点到汇点的最短路径

    B.最短回路

    C.从源点到汇点的最长路径

    D.最长回路


    从源点到 终 点的最长路径

  • 第3题:

    68、决策树从根结点到某一叶子结点的路径称为()。


    性别属性;9;决策

  • 第4题:

    59、决策树从根结点到某一叶子结点的路径称为()。


    性别属性;9;决策

  • 第5题:

    系列关于大根堆(至少含2个元素)的叙述中正确的是()。

    A.可以将堆看成一棵完全二叉树

    B.可采用顺序存储方式保存堆

    C.可以将堆看成一棵二叉排序树

    D.堆中的次大值一定在根的下一层

    E.最小关键字一定出现在最底层的叶子结点中

    F.从根结点到某个叶子结点所经路径上的结点一定构成一个递减有序序列


    D解析:小根堆中元素比它本身的根小,它和它的兄弟没有大小关系。