知识大全 数据结构考研分类复习真题 第六章 答案 (五)[27]

Posted 结点

篇首语:今日长缨在手,何时缚住苍龙。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第六章 答案 (五)[27]相关的知识,希望对你有一定的参考价值。

   [题目分析]叶子结点只有在遍历中才能知道 这里使用中序递归遍历 设置前驱结点指针pre 初始为空 第一个叶子结点由指针head指向 遍历到叶子结点时 就将它前驱的rchild指针指向它 最后叶子结点的rchild为空

  LinkedList head pre=null;  //全局变量  LinkedList InOrder(BiTree bt)  //中序遍历二叉树bt 将叶子结点从左到右链成一个单链表 表头指针为head  if(bt)InOrder(bt >lchild);          //中序遍历左子树  if(bt >lchild==null && bt >rchild==null) //叶子结点  if(pre==null) head=bt; pre=bt; //处理第一个叶子结点  elsepre >rchild=bt; pre=bt;    //将叶子结点链入链表  InOrder(bt >rchild);                 //中序遍历左子树  pre >rchild=null;                    //设置链表尾    return(head);  //InOrder

  时间复杂度为O(n) 辅助变量使用head和pre 栈空间复杂度O(n)

   层次遍历 参见上面算法第 题 中序遍历序列和后序序列可确定一棵二叉树 详见上面应用题第 题 先序序列和后序序列无法确定一棵二叉树 因为无法将二叉树分成左右子树 如先序序列AB和后序序列BA A是根 但B可以是左子女 也可以是右子女

cha138/Article/program/sjjg/201311/23705

相关参考